我有一个使用全文搜索 View 的存储过程。
我正在尝试将结果映射到现有实体 (Sales
),其中我将列 MivType
映射到 SaleType
(因为它使更多感觉,我想让数据库名称远离我的网站)。存储过程映射到函数导入,并且我已将其 ReturnType 定义为 Sales
。
只要实体具有与字段名称相同的属性名称,这种方法就可以正常工作。
这是我的问题:当我更改属性名称时,运行导入的函数后出现以下错误:
The data reader is incompatible with the specified 'Model.Sale'. A member of the type, 'SaleType', does not have a corresponding column in the data reader with the same name.
如果我将实体上的属性“SaleType”更改为“MivType”,我可以解决此问题,但为什么要这样做呢?这不就是映射的目的吗?
这意味着我必须在存储过程和实体上使用完全相同的名称,因此实际上,映射被忽略(我的名称如 YzrName
、MivYaad
等,我不喜欢它)。
有没有一个简单的方法可以解决这个问题?我不想在我的应用程序上使用数据库名称,并且不想更改存储过程...
(我应该提到我是 EF 的初学者,所以这可能是一个菜鸟错误)
谢谢。
最佳答案
嗯,实体设计器工作得不太好。我通常尝试在 XML 中完成所有操作。 XML 中有 3 部分。存储(SQL 数据库的表示)。概念(.Net 对象的表示。以及概念到存储的映射
听起来错误出在您的概念到存储映射中。您可以在概念端保留属性名称 SalesType,但映射必须在概念端和存储端映射正确的名称。
引用MSDN这里有一些文章 http://msdn.microsoft.com/en-us/library/cc716731.aspx
关于asp.net - Entity Framework - 映射不映射存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2000267/