.NET MVC Db上下文模型扩展

时间:2012-12-27 18:17:23

标签: .net asp.net-mvc entity-framework asp.net-web-api

我想做的事情相当简单,虽然我不明白为什么我会收到内部服务器错误。

我正在使用Entity Framework和Database first方法。 我有一个模型客户端对应于数据库表,也在DbContext中声明。

然后我想生成一个带有附加属性的客户端模型,所以我只是扩展了客户端模型。

Client
--id
--name
--lastName

ClientDetails: Client
--IEnumerable<addresses>

然后我只是将对象转换为方法

ClientDetails tempClient = (ClientDetails) repository.getClient(id);

虽然Intelisence没有报告错误,但在运行该功能时出现内部服务器错误。

我进行了一些更改,例如复制模型而不是扩展它,手动投射或在另一个函数中使用Parent模型(这也会返回错误)

我得出的结论是,当父模型被另一个模型扩展时,使用该父模型或子项的所有内容都“失败”。 是否存在Db.Context模型即使外部使用也无法扩展的规则?

1 个答案:

答案 0 :(得分:0)

客户端类不是部分的吗?

另一个选项是更改客户端类并添加具有NotMapped属性的属性: http://msdn.microsoft.com/en-us/data/jj591583

更改生成的代码不是一个好主意,但您可以创建自己的客户端类。

不要仅使用继承来扩展EF类,使用您在代码中只需要的属性而不是在数据库中。 如果您需要在数据中继承,请输入以下信息: http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph.aspx

如果您不想更改客户端类,也可以将其包装在其他类中。