实体框架 Code First SQL Server 视图
Posted
技术标签:
【中文标题】实体框架 Code First SQL Server 视图【英文标题】:Entity framework Code First SQL Server View 【发布时间】:2017-01-23 08:28:48 【问题描述】:我在我的数据库中定义了一个视图,然后我在代码中编写了实体定义:
[Persistence]
[Table("ADMV_APPLICATION_OPTION")]
public partial class ADMV_APPLICATION_OPTION
public string ID_APPLICATION_OPTION get; set;
public string DS_APPLICATION_OPTION get; set;
public byte FL_TYPE get; set;
public Nullable<double> OPTION_NUM_VALUE get; set;
public string OPTION_STR_VALUE get; set;
public string OPTION_XML_VALUE get; set;
public System.Guid GUID_DIVISION_SAP get; set;
public string ID_DIVISION_SAP get; set;
public string ID_PLANT get; set;
当我执行我的应用程序时出现错误
在模型生成过程中检测到一个或多个验证错误:
MES.Core.ADMV_APPLICATION_OPTION: : EntityType 'ADMV_APPLICATION_OPTION' 没有定义键。为此定义密钥 实体类型。
视图是否也需要密钥?
谢谢
【问题讨论】:
您需要添加 PrimaryKey ,Entity Framework 需要知道密钥。 也是为了观点? 是的视图也需要PK 【参考方案1】:您的错误清楚地表明您需要添加 PrimaryKey。 EntityFramework 中的视图也需要PK。你可以告诉EF,在SQL中创建视图时,某些列可能被用作PK,使用ISNULL
:
Create view SomeView
As
Select
IsNull(YourUniqueId, -1) as YourUniqueId,
...
From TableName
或者使用Data Annotation使用[Key]
属性,将此属性设置为ID_APPLICATION_OPTION
确保它是唯一的。
[Persistence]
[Table("ADMV_APPLICATION_OPTION")]
public partial class ADMV_APPLICATION_OPTION
[Key]
public string ID_APPLICATION_OPTION get; set;
public string DS_APPLICATION_OPTION get; set;
public byte FL_TYPE get; set;
public Nullable<double> OPTION_NUM_VALUE get; set;
public string OPTION_STR_VALUE get; set;
public string OPTION_XML_VALUE get; set;
public System.Guid GUID_DIVISION_SAP get; set;
public string ID_DIVISION_SAP get; set;
public string ID_PLANT get; set;
【讨论】:
以上是关于实体框架 Code First SQL Server 视图的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义 ID 插入数据的 Code-First 实体框架