例外は次のとおりです。
データベースが作成されてから、「ScannerContext」コンテキストをサポートするモデルが変更されました。Code First Migrations を使用してデータベースを更新することを検討してください ( http://go.microsoft.com/fwlink/?LinkId=238269 )。
アプリケーションを実行するたびにこれを取得します。私はそれが何を意味するのか理解できません。何かが正しくマッピングされていないことを意味していると思いますが、何が原因かわかりません。私はコード ファースト モデルを使用しており、完全にカスタム マッピングが必要な既存のデータベースがあります。現在、可能性のある原因を排除するために、クラス内のすべてにデータベースと同じ名前を付けています。
.Add()
エンティティをコンテキストにしようとすると、例外がスローされます。
データベースにあるそのままのエンティティ
私のDataLayerのエンティティ
public class EAsset
{
public int i_GID { get; set; }
public EAssetType Type { get; set; }
public EOrgEnvironment Environment { get; set; }
public EUser Contact { get; set; }
public string s_Name { get; set; }
public string s_Role { get; set; }
public DateTime d_Added { get; set; }
public DateTime d_LastUpdated { get; set; }
public bool b_Retired { get; set; }
public EAsset()
{
Type = new EAssetType();
Environment = new EOrgEnvironment();
Contact = new EUser();
d_Added = DateTime.Now;
d_LastUpdated = DateTime.Now;
}
}
コンテキスト オブジェクト(テーブル マッピングとキー割り当てを試行)
public class ScannerContext : DbContext
{
public ScannerContext()
: base("LabDatabase") { }
public DbSet<EAsset> EAssets { get; set; }
public DbSet<EAssetType> EAssetTypes { get; set; }
public DbSet<EOrgEnvironment> EOrgEnvironments { get; set; }
public DbSet<EUser> EUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<EAsset>().HasKey(k=>k.i_GID).ToTable("t_Assets");
modelBuilder.Entity<EAssetType>().HasKey(k => k.i_ID).ToTable("t_Asset_Types");
modelBuilder.Entity<EOrgEnvironment>().HasKey(k => k.i_ID).ToTable("t_Org_Environments");
modelBuilder.Entity<EUser>().HasKey(k => k.i_ID).ToTable("t_Users");
base.OnModelCreating(modelBuilder);
}
}
プログラム
class Program
{
static void Main(string[] args)
{
EAsset Entity = new EAsset { s_Name = "jewri-pc" };
var sContext = new ScannerContext();
sContext.EAssets.Add(Entity);
sContext.SaveChanges();
}
}