Generate T-SQL Via T4 (TPH).xaml (VS) および SSDLToSQL10.tt (VS) テンプレートでエンティティ フレームワークを使用します。私はテーブルを持っています
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 列をまったく使用していないことがわかります。誰でも助けることができますか?