【问题标题】:The ForeignKeyAttribute on property is not valid属性上的 ForeignKeyAttribute 无效
【发布时间】:2012-08-29 08:03:33
【问题描述】:

我已阅读How Should I Declare Foreign Key Relationships Using Code First Entity Framework (4.1) in MVC3?,但我无法接到电话以产生任何结果。它有以下错误:

类型上的属性“Footer_Item_Header_ID”上的 ForeignKeyAttribute “MyBlog.Tbl_Footer_Item”无效。导航属性 在依赖类型上找不到“Tbl_Footer_Header” 'MyBlog.Tbl_Footer_Item'。 Name 值应该是有效的导航 属性名称。

在这一行:

Dim footerNavElements = db.Tbl_Footer_Headers.Where(Function(i) i.Footer_Header_Order = 1).Single.Items

这是我的父模型:

Imports System.Data.Entity
Imports System.ComponentModel.DataAnnotations

Public Class Tbl_Footer_Header

    <Key()> Public Property Footer_Header_ID() As Integer
    Public Property Footer_Header_Content() As String
    Public Property Footer_Header_Order() As Integer

    Public Overridable Property Items As ICollection(Of Tbl_Footer_Item)

End Class

Public Class FooterHeaderDbContext
    Inherits DbContext

    Public Property Tbl_Footer_Headers As DbSet(Of Tbl_Footer_Header)

End Class

这是我的孩子模型:

Imports System.Data.Entity
Imports System.ComponentModel.DataAnnotations

Public Class Tbl_Footer_Item

    <Key()> Public Property Footer_Item_ID() As Integer
    <ForeignKey("Tbl_Footer_Header")>
    Public Property Footer_Item_Header_ID() As Integer
    Public Property Footer_Item_Content() As String
    Public Property Footer_Item_Link() As String
    Public Property Footer_Header_Order() As Integer

    Public Overridable Property Header As Tbl_Footer_Header

End Class

Public Class FooterItemDbContext
    Inherits DbContext

    Public Property Tbl_Footer_Items As DbSet(Of Tbl_Footer_Item)
    Public Property Tbl_Footer_Headers As DbSet(Of Tbl_Footer_Header)

End Class

我该怎么做才能使操作产生没有错误的结果?谢谢。

【问题讨论】:

    标签: asp.net-mvc vb.net asp.net-mvc-3 entity-framework


    【解决方案1】:

    你的外键注解应该是属性的名称,而不是类型。

    您的导航属性是 Header:

    Public Overridable Property Header As Tbl_Footer_Header
    

    所以你的注释,应该引用该属性。将其更改为:

    <ForeignKey("Header")>
    Public Property Footer_Item_Header_ID() As Integer
    

    【讨论】:

    • 谢谢,但我现在收到一条错误消息“Invalid column name 'Footer_Header_Order'”。显然有一个 Footer_Header_Order 列和属性,那么给出了什么?谢谢。
    • 我看到一个表示订单的整数:Public Property Footer_Header_Order() As Integer,这是你想要的,还是应该是ID?
    • 它应该是一个整数,因为我将使用它来确定列表中项目的顺序,即 1、2、3(所有整数)。
    • 子模型中有一条不应该存在的Public Property Footer_Header_Order() As Integer 行。那就是错误所指的那个(不是我怀疑的父模型中的那个)。感谢您的帮助:)
    • 这不仅帮助我从头开始理解编写实体,还帮助我刷新(或至少重新发现)VB.NET。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多