TestとTester、TestにはIdとName、TesterにはTestNameとTestIdの2つのテーブルがある非常に単純なデータベースがあります。2つの間に1:N接続があります。私がやりたいのは、テーブルの1つに新しいエントリを追加することですが、null参照例外が発生しました。
コンテキスト用のクラスがあります:
public class TestContext : DbContext, ITestContext
{
public DbSet<Test> Tests { get; set; }
public DbSet<Tester> Testers { get; set; }
public TestContext()
: base(){}
public TestContext(DbConnection connection) : base (connection, false)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TestConfiguration());
modelBuilder.Configurations.Add(new TesterConfiguration());
}
}
2つの構成ファイルには、関係といくつかの制限が含まれています。
そして、オブジェクトの1つに新しいエンティティを追加できるEntityManagerクラスがあります。
private ITestContext _context;
public ObservableCollection<Test> Tests { get; set; }
public ObservableCollection<Tester> Testers { get; set; }
private static EntityManager _instance;
public static EntityManager Instance
{
get { return _instance ?? (_instance = new EntityManager()); }
}
private EntityManager()
{
Tests = new ObservableCollection<Test>();
Testers = new ObservableCollection<Tester>();
Database.DefaultConnectionFactory = new SqlConnectionFactory("System.Data.SqlClient");
connection = Database.DefaultConnectionFactory.CreateConnection(@"Data Source=.;Initial Catalog=Test;Integrated Security=True");
_context = new TestContext(connection);
_context.Tests.Add(new Test {Name = "new Test"});
_context.SaveChanges();
LoadData();
}
private void LoadData()
{
Tests.Clear();
Testers.Clear();
_context.Tests.ToList().ForEach(Tests.Add);
_context.Testers.ToList().ForEach(Testers.Add);
}
したがって、「新しいテスト」をテストに追加しようとすると、null参照例外が発生しました。また、追加部分を省略した場合、完全に実行されますが、コレクションに新しいエンティティを追加する機能が失われます。誰かが私に何がうまくいかないかアドバイスしてもらえますか?乾杯!