【发布时间】:2016-08-21 10:35:51
【问题描述】:
我有一个通过 EF7 映射到数据库的模型。所有属性都与表的映射列相同。
现在我有一个存储过程,它返回一些连接列,但基础仍然是映射模型。
这是我的模型(实体),它映射到我数据库上的 Table1。
public partial class Table1
{
public int id { get; set; }
public bool Column1{ get; set; }
public int Column2 { get; set; }
public int Column3 { get; set; }
public int Column4 { get; set; }
public int Column5 { get; set; }
}
My StoredProcedure 返回所有这些列以及另一个表中的一个 Column,其中包含有关此对象的其他信息。
所以我的 StoredProcedure 看起来像这样:
CREATE PROCEDURE Table1_Select
AS
BEGIN
SELECT Column1,
Column2,
Column3,
Column4,
Column5,
Table2.JoinedColumn1
FROM Table1
JOIN Table2 on Table1.ID = Table2.ID_Table1
END
我的想法是在模型中添加一个属性
public string JoinedColumn1 {get; set;}
这适用于执行 StoredProcedure,但一旦我想使用
获取一个实体,它就无法正常工作MyContext.Table1.FirstOrDefault(t=>t.id == 1)
这总是在 Fiddler 中返回服务器错误 500,而使用 "Table1.FromSql("Table1Select")" 的存储过程执行工作正常。
或者我是否必须决定是对我的模型使用 StoredProcedures 还是直接访问实体?
对此有任何最佳实践或解决方案吗?
提前非常感谢。 尼康
【问题讨论】:
-
为什么使用Entity Framework Database First方法的项目中不包含Store程序?
-
如何在 Scaffold 命令中添加 StoredProcedures?我只发现this link 表示 -t 表示表或 -s 表示模式 ...
标签: c# sql-server stored-procedures entity-framework-core entities