我有一個非常簡單的帶有2個表的數據庫:Test和Tester,Test有一個Id和一個名稱,Tester有一個Id,一個TestName和一個TestId。兩者之間有1:N連接。我只是想添加一個新的條目到一個表中,但我得到了一個空引用異常。Code-First:將實體添加到dbset時的空引用異常
我有一類上下文:
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);
}
所以,當我嘗試了「新的測試」添加到我得到一個空引用異常的測試。如果我將添加部分放出,它會完美運行,但是我失去了將新實體添加到集合的功能。有人能告訴我可能會出錯嗎?乾杯!
NULL是什麼?它是'_context.Tests'嗎?或者它是'DbContext'裏面的東西? –
DbContext和_context.Tests一起很好。它會在add函數內引發空引用異常。 – JahManCan