我在远程计算机上的 SQL Server 上创建了一个小型数据库,其中包含几个表,Document
称为File
和Tag
。关系很简单:文件->文档:一对多,标签->文档:多对多。因此,我创建了一个名为 document_tag 的链接表,用于存储文档和标签 ID。
然后我要求 Entity Framework 为我创建相应的代码,这导致了几个类。一切都很完美,除了性能有点慢,所以我决定创建一个.SDF
文件(SQL Server CE 数据库),保留与模型对话的代码并让 Entity Framework 重新创建模型。
在此之后,当我简单地运行以下代码时
var doc = new Document { Name = "Test", Documentdate = new DateTime( 2010, 1, 2 };
var file = new File{ Document = doc, Filename = "test.txt", Scandate = new DateTime( 2010, 1, 3 ) };
var tag1 = new Tag { Name = "test-tag" };
_db.documents.Add(doc);
_db.files.Add(file);
_db.tags.Add(tag1);
_db.SaveChanges();
一切正常,文档、文件和标签已存储。
但是,当我只是添加将标签分配给文档的行时:
var doc = new Document { Name = "Test", Documentdate = new DateTime( 2010, 1, 2 };
var file = new File{ Document = doc, Filename = "test.txt", Scandate = new DateTime( 2010, 1, 3 ) };
var tag1 = new Tag { Name = "test-tag" };
_db.documents.Add(doc);
tag1.Documents.Add(doc);
_db.files.Add(file);
_db.tags.Add(tag1);
_db.SaveChanges();
我得到了例外
值不能为空。参数名称:来源
在SaveChanges()
通话中。有谁知道我在这里做错了什么?