【发布时间】:2018-02-01 12:13:47
【问题描述】:
public abstract class TableBase
{
[Required]
public DateTime DateInsert { get; set; }
public DateTime? DateUpdate { get; set; }
[Required]
public AppUser UserInsert { get; set; }
public AppUser UserUpdate { get; set; }
}
public class AppUser:TableBase
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string LoginName { get; set; }
[Required]
public string PasswordStored { get; set; }
}
public class SandorTestDBContext : DbContext
{
public SandorTestDBContext() : base("SandorTestDB")
{
}
public DbSet<AppUser> AppUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
base.OnModelCreating(modelBuilder);
}
}
鉴于上述类,可以假设 SQLserver 中的 AppUser 表将包含这两个类的所有字段。但该表缺少 UserUpdate_Id 字段。
TABLE [dbo].[AppUsers](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[LoginName] [nvarchar](max) NOT NULL,
[PasswordStored] [nvarchar](max) NOT NULL,
[DateInsert] [datetime] NOT NULL,
[DateUpdate] [datetime] NULL,
[UserInsert_Id] [int] NOT NULL
另一方面,添加以下类:
public class Company : TableBase
{
public int Id { get; set; }
public string Name { get; set; }
public string OldCompanyReference { get; set; }
}
在上下文中添加 DbSet 确实会生成所有字段
public DbSet<Company> Companies { get; set; }
TABLE [dbo].[Companies](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
[OldCompanyReference] [nvarchar](max) NULL,
[DateInsert] [datetime] NOT NULL,
[DateUpdate] [datetime] NULL,
[UserInsert_Id] [int] NOT NULL,
[UserUpdate_Id] [int] NULL,
那我错过了什么???
【问题讨论】:
标签: c# entity-framework-6 sql-server-2016