我正在使用 EF 4.1 Database First 方法,使用 T4 模板在单独的程序集中生成我的 POCO 类。我有用于获取数据的存储库,以及用于与 UI 通信的服务层。
我试图制作级联下拉菜单。我是 MVC 和 EF 4.1 的新手,所以我在 stackoverflow 中搜索了可能的解决方案。
这是示例视图模型类:
public class MyViewModel
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public IEnumerable<Phone> Phones { get; set; }
}
到目前为止,我所阅读的解决方案是:
ScriptIgnoreAttribute
在 引用属性上使用System.Web.Script.Serialization
- 我真的不想这样做,因为我不想在我的 POCO 项目中添加对 System.Web 的引用在 EF 4.1 DbContext 中禁用延迟加载 - 我不确定我是否要在我的项目中使用 Include
返回匿名类型 - 当我的项目变大时,我会遇到这种方法的问题吗?
使用 ViewModel - 假设我有一个可以拥有 1 部或更多部手机的客户。在第一个下拉列表中您可以选择客户,在第二个下拉列表中您可以显示他的所有电话。
但这不会在我的 Phones 对象上产生循环异常吗?或者我会为我的电话对象创建一个特殊的类?这似乎是很多不必要的代码。使用 AutoMapper - 没有使用 AutoMapper 的经验,所以我不知道它有多复杂。
你会投票给哪一个,为什么?