use*_*388 1 vb.net asp.net-mvc entity-framework asp.net-mvc-3
我已经阅读过如何在MVC3中使用Code First Entity Framework(4.1)声明外键关系?但我无法接到我的号召,不会产生任何结果.它有以下错误:
类型为"MyBlog.Tbl_Footer_Item"的属性"Footer_Item_Header_ID"上的ForeignKeyAttribute无效.在依赖类型"MyBlog.Tbl_Footer_Item"上找不到导航属性"Tbl_Footer_Header".Name值应该是有效的导航属性名称.
在这一行:
Dim footerNavElements = db.Tbl_Footer_Headers.Where(Function(i) i.Footer_Header_Order = 1).Single.Items
Run Code Online (Sandbox Code Playgroud)
这是我的父模型:
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
Run Code Online (Sandbox Code Playgroud)
这是我的孩子模特:
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
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能使操作产生没有错误的结果?谢谢.
您的外键是注释应该是属性的名称,而不是类型.
您的导航属性是标题:
Public Overridable Property Header As Tbl_Footer_Header
Run Code Online (Sandbox Code Playgroud)
所以你的注释应该引用属性.将其更改为:
<ForeignKey("Header")>
Public Property Footer_Item_Header_ID() As Integer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6503 次 |
| 最近记录: |