linq to sql中设置IsPrimaryKey为true时 出现不允许在查询中显式构造实体类型解决方案

using System.Data.Linq.Mapping;
[Table(Name = "UserInfo")]

public class UserInfo
{
    [Column(IsDbGenerated = true, IsPrimaryKey = true, AutoSync = AutoSync.OnInsert, CanBeNull = false)]
    public int Id { get; set; }
    [Column]
    public int Age { get; set; }
    [Column]
    public string Name { get; set; }
    [Column]
    public string Address { get; set; }
}

public class DbLinq : DataContext
{
    /// <summary>
    /// 连接字符串
    /// </summary>
    public static string ConnectionStr { get; set; }
    public DbLinq() : base(ConnectionStr)
    {
    }
    /// <summary>
    /// 可用于增删改查
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    public Table<T> QueryInfo<T>() where T : class
    {
        if (Connection.State != ConnectionState.Open)
        {
            new DbLinq();
        }
        return this.GetTable<T>();
    }
}
当我定义一个实体类时,这样调用一个方法
 var linq = new Oscar.DbLinq();
           var model = linq.QueryInfo<UserInfo>().Where(item => item.Id == 4).Select(item => new UserInfo {Address= item.Address }).FirstOrDefault();
           这个时候返回的结果是出现不允许在查询中显式构造实体类型解决方案。异常情况,经过查询是设置了主键字段的IsPrimaryKey = true,如果把它删除就可以,这种情况如何修改
阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进