Vb.net 在实体框架4中轻松使用视图
我正在visual studio 2012中创建一个webform vb.net项目。 我还使用实体框架来管理我的对象。 最大的痛苦是数据库中的一个视图造成的,我不得不使用它 我可以使用该类从此视图检索对象:Vb.net 在实体框架4中轻松使用视图,vb.net,entity-framework,entity-framework-migrations,Vb.net,Entity Framework,Entity Framework Migrations,我正在visual studio 2012中创建一个webform vb.net项目。 我还使用实体框架来管理我的对象。 最大的痛苦是数据库中的一个视图造成的,我不得不使用它 我可以使用该类从此视图检索对象: Imports System.ComponentModel.DataAnnotations Public Class C <Key, StringLength(6), Display(name:="C")> _ Public Property IDC() As
Imports System.ComponentModel.DataAnnotations
Public Class C
<Key, StringLength(6), Display(name:="C")> _
Public Property IDC() As String
<Display(Name:="Descrizione"), StringLength(255)> _
Public Property Descrizione() As String
End Class
迁移代码为:
Public Overrides Sub Up()
CreateTable(
"dbo.Ss",
Function(c) New With
{
.SID = c.Int(nullable := False, identity := True),
.Descrizione = c.String(nullable := False, maxLength := 255),
.C_IDC = c.String(maxLength := 6)
}) _
.PrimaryKey(Function(t) t.SID) _
.ForeignKey("dbo.c", Function(t) t.C_IDC) _
.Index(Function(t) t.C_IDC)
End Sub
在上下文类中定义了正确的视图:
Protected Overrides Sub OnModelCreating(ByVal modelBuilder As DbModelBuilder)
modelBuilder.Entity(Of C)().ToTable("c")
End Sub
通过谷歌搜索这个问题,我“认为”一种可能性是关闭级联删除功能,但即使:
modelBuilder.Entity(Of S).HasRequired(Function(c) c.C).WithMany.WillCascadeOnDelete(False)
迁移尝试修改视图。(上面的代码正确吗?)
是否可以以这种方式在实体框架中使用视图?
如何将要创建的模型中的对象链接到此视图中的图元
在这种情况下,实体框架是合理的方法吗
谢谢 代码优先迁移旨在自动管理数据库。如果您的数据库存在使完全自动化无法实现的限制(如视图),您可以:
Protected Overrides Sub OnModelCreating(ByVal modelBuilder As DbModelBuilder)
modelBuilder.Entity(Of C)().ToTable("c")
End Sub
modelBuilder.Entity(Of S).HasRequired(Function(c) c.C).WithMany.WillCascadeOnDelete(False)