我有一个非常简单的数据库,其中包含 2 个表:Test 和 Tester,Test 有一个 Id 和一个 Name,Tester 有一个 Id、一个 TestName 和一个 TestId。两者之间存在 1 : N 连接。我只是喜欢做的是向其中一个表添加一个新条目,但我得到了一个空引用异常。
我有一个上下文类:
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());
}
}
这两个配置文件包含关系和一些限制。
我有一个 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);
}
因此,当我尝试将“新测试”添加到测试中时,我得到了一个空引用异常。如果我将添加部分排除在外,它会完美运行,但是我失去了将新实体添加到集合的功能。有人可以告诉我可能出什么问题吗?干杯!