0
我使用通过T4(TPH).xaml(VS)和SSDLToSQL10.tt(VS)模板生成T-SQL的实体框架。 我有一个表SaveChanges不适用于TPH实体
TABLE [dbo].[Users](
[UserId] [int] IDENTITY(1,1) NOT NULL,
[UserName] [nvarchar](100) NOT NULL,
[Password] [nvarchar](50) NOT NULL,
[IsPaid] [bit] NOT NULL
由于我有2种用户类型,字段IsPaid是鉴别器。我在我的模型中创建了TPH。通过.TT生成的类
public abstract partial class User
{
public User()
{
}
public int UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public partial class RegularUser : User
{
}
public partial class PaidUser : User
{
}
public Container()
: base("name=Container")
{
this.Configuration.LazyLoadingEnabled = false;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<User> Users { get; set; }
比方说,我有一个ID 3.定期用户创建一个新的付费用户u使用相同的数据,并尝试将其保存。
using (var entities = new Container())
{
entities.Entry(u).State = u.UserId == 0 ? EntityState.Added : EntityState.Modified;
entities.SaveChanges();
}
什么也没有发生。我可以从配置文件中看到,该查询根本不使用IsPaid列。谁能帮忙?