0

我最近創建了一個MVC 3 ASP.net應用程序(使用VB)。我還通過運行aspnet_regsql創建了表單驗證。我用它在我的應用程序使用的同一個數據庫中創建表。我試圖找出如何創建一個新的模型,用戶表中有一個FK。我是否必須對驗證表進行反向工程以在我的應用程序中創建模型?現在,這些表僅存在於SQL 2008數據庫中,因爲它們是通過運行aspnet_regsql命令創建的,並不在我的ASP.net解決方案中作爲模型存在。這裏是我現在的代碼,一個模型,我想一個FK增加(作爲一個一對多的關係):創建FK模型,從aspnet表格驗證表

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

    Public Class modelArtist 
    Public Property ID() As Integer 

    <Required()> _ 
    <DataType(DataType.Text)> _ 
    <Display(Name:="Artist Name:")> _ 
    Public Property ArtistName() As String 

    <DataType(DataType.Text)> _ 
    <Display(Name:="Artist Bio:")> _ 
    Public Property ArtistBio() As String 

    <Display(Name:="")> 
    Public Property dateCreated() As Date 

    <Display(Name:="")> _ 
    Public Property dateLastEdited() As Date 
End Class 

    Public Class iDjItDBContext 
    Inherits DbContext 
    Public Property modelArtist() As DbSet(Of modelArtist) 
    End Class 

回答

1

可以代表FK簡單的屬性添加到用戶表,但是你應該不添加導航屬性。在這種情況下FK將只是簡單的屬性,沒有其他含義。它將建立你的實體和用戶之間的連接,但它不允許你與EF的用戶合作 - 這正是你想要的。您還必須手動在表和用戶表之間創建數據庫中的關係。

問題是,不要映射ASP.NET數據庫表中的任何內容。

  • 這些功能在ASP.NET中有自己的API。從EF訪問這些功能將違反該API的封裝(以及關注點分離)。
  • 該API提供的類通常不能直接映射。如果你想從數據庫映射表,你可能需要爲這些實體創建新的實體類=代碼重複,並再次破壞該API實施的封裝和規則。

Btw。它被稱爲表單身份驗證而不是表單驗證。

+0

感謝您的幫助! – jason 2012-01-17 16:34:42