在Entity Framework中存储复杂类型

时间:2012-03-19 03:02:56

标签: asp.net-mvc entity-framework

我在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复制的对象,但是我需要创建从数据库中获取的对象中复制了所有相关属性的对象。当然我做错了,我现在编写的代码比使用存储过程和我自己的数据层要多吗?

0 个答案:

没有答案