2016-09-29 31 views
0

我試圖簡單地使用vb.net MVC訪問現有數據庫中的信息。問題是,當我運行代碼時,它會在數據庫中創建一個表,其名稱類似於我試圖訪問的表,並在末尾添加's'。MVC模型在數據庫中創建表而不是使用現有的

例如:

現有的表格:VXPartsData。運行的應用程序後創建

表:VXPartsDatas

我已經成功地做到這一點在C鋒利很容易,但不明白我要去哪裏錯用VB。如果有人能請點我在正確的方向,謝謝

Imports System.Data.Linq 
Imports System.Data.Linq.Mapping 
Imports System.ComponentModel.DataAnnotations 
Imports System.Data.Entity 


Namespace Models 

<Table(Name:="dbo.VXPartsData")> 
    Public Class VXPartsData 

    <Key()> 
    Public Property PartNo As String 
    Public Property CustPart As String 
    Public Property ShortDesc As String 
    Public Property Part As String 
    Public Property Price As Decimal 
    Public Property DiscCode As String 
    Public Property Kit As Boolean 
    Public Property VXCODE As String 

End Class 

Public Class ProductContext 
    Inherits DbContext 
    Public Property VXPartsDatas As DbSet(Of VXPartsData) 
End Class 


End Namespace 

控制器:

Imports System.Data.Entity 
Imports Videx_PB2.Models 

Public Class HomeController 
    Inherits System.Web.Mvc.Controller 

    Private db As New ProductContext 

    Function Index() As ActionResult 

     Return View(db.VXPartsDatas.ToList()) 

    End Function 

End Class 

連接字符串:

<connectionStrings> 
    <add name="ProductContext" connectionString="server=(localdb)\MSSQLLocalDB; database=VidexPB; integrated security=SSPI" providerName="System.Data.sqlClient" /> 
    </connectionStrings> 

回答

1

在你ProductContext類,添加以下代碼:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    ... 

    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 

    ... 

    base.OnModelCreating(modelBuilder); 
} 

EF不會複製表名

+0

謝謝,這似乎是這種情況,我將該表更名爲測試,並且它工作。我有一個費用問題:1)爲什麼在使用c sharp和實體框架時不會發生這種情況? 2)你是否有上述功能的等效VB代碼? –

+0

@AHoughton我不知道你的第一個問題的答案。對於問題2:modelBuilder.Conventions.Remove(Of PluralizingTableNameConvention)() – user449689

+0

非常感謝 –

相關問題