我在ASP.NET MVC项目中使用edmx设计器创建了一个数据库。这有很多像这样的表:
这个细节可能并不重要。核心类是Staff
,它具有Location
属性,具有Office
属性,LocationType
属性,BusinessType
属性和{{1 property(具有Browser Version
属性)。
我正在创建一个注册表单。我开始尝试使用像Browser
之类的代码创建一个Staff成员实例来保存
使用完全填充的类实例填充类。此时调用save方法会爆炸:
'DBContainer.BrowserVersions'中的实体参与了 'BrowserBrowserVersion'的关系。找到了0个相关的'浏览器'。 预计1'浏览器'。
现在,再次正确填充了BrowserVersion.Browser类。
所以,我做了一些阅读,结果我确保我的代码总是使用相同的DBContext。这并没有解决我的问题。所以我改变了我的代码来做这样的事情:
staffMember.Location.LocationType = DB.Locations(l => l.Id = model.Id);
然后会出现如下错误:
{“无法将值NULL插入列'BrowserName',表中 'MyProject.dbo.Browsers';列不允许空值。插入 失败。\ r \ n声明已经终止。“}
最后我发现我不能使用从我的DBContext复制的对象,但是我需要创建从数据库中获取的对象中复制了所有相关属性的对象。当然我做错了,我现在编写的代码比使用存储过程和我自己的数据层要多吗?