我想在ASP.NET MVC 4 Razor中显示来自用户定义函数的信息。数据库中的函数如下所示:
CREATE FUNCTION dbo.udf_GetReportsByController(@controller_account VARCHAR(128))
RETURNS @retReports table (
ID INTEGER IDENTITY PRIMARY KEY,
ProviderID VARCHAR(50) NOT NULL ,
VertragID INTEGER NOT NULL,
Leistungszeitraum_von DATE NOT NULL,
Leistungszeitraum_bis DATE NOT NULL,
ReportklasseID VARCHAR(50) NOT NULL,
Version INTEGER NOT NULL,
Status VARCHAR(64)
)
AS
BEGIN
//Do some stuff and insert in the ret-table
RETURN;
END;
GO
实体框架在此类中映射此内容:
public partial class udf_GetReportsByController_Result
{
[Column("ID")]
public int ID { get; set; }
[Column("ProviderID")]
public string ProviderID { get; set; }
[Column("VertragID")]
public int VertragID { get; set; }
[Column("Leistungszeitraum_von")]
public System.DateTime Leistungszeitraum_von { get; set; }
[Column("Leistungszeitraum_bis")]
public System.DateTime Leistungszeitraum_bis { get; set; }
[Column("ReportklasseID")]
public string ReportklasseID { get; set; }
[Column("Version")]
public int Version { get; set; }
[Column("Status")]
public string Status { get; set; }
}
当我想在我的Controller中执行一些DbSet-Methods时,我收到一条错误消息,我的模型类被映射为复杂的Type。我读到一个复杂类型没有主键,但我在我的函数中定义了一个,我需要通过它来识别一个元素。如何在此ret-Table中指定主键?
答案 0 :(得分:0)
当您执行类似
的操作时context.Set<udf_GetReportsByController_Result>()
实体框架将查找根据结果类型映射的表。但是,此表不存在。该函数确实返回一个表,但这是一个表变量,而不是一个表是数据库模式的一部分。只有实体类型映射到模式表。
您只能通过调用导入的函数来获取udf_GetReportsByController_Result
个对象:
var results = context.udf_GetReportsByController(accountNo);