Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在实体框架4中轻松使用视图_Vb.net_Entity Framework_Entity Framework Migrations - Fatal编程技术网

Vb.net 在实体框架4中轻松使用视图

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

我正在visual studio 2012中创建一个webform vb.net项目。 我还使用实体框架来管理我的对象。 最大的痛苦是数据库中的一个视图造成的,我不得不使用它

我可以使用该类从此视图检索对象:

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)
迁移尝试修改视图。(上面的代码正确吗?)

是否可以以这种方式在实体框架中使用视图? 如何将要创建的模型中的对象链接到此视图中的图元

在这种情况下,实体框架是合理的方法吗


谢谢

代码优先迁移旨在自动管理数据库。如果您的数据库存在使完全自动化无法实现的限制(如视图),您可以:

  • 让EF为您服务,但只应用您想要的部分
  • 关于在现有数据库上使用代码优先迁移,有一些很好的一般信息

    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)