【问题标题】:Entity framework Code First SQL Server View实体框架 Code First SQL Server 视图
【发布时间】: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

标签: sql-server entity-framework view ef-code-first


【解决方案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; }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多