2011-03-28 43 views
1

誰能幫助我與使用DataContext.CreateDatabase()函數創建時沒有被生成的表軌道和表TrackArtist之間的外鍵的原因我的數據庫基於我的實體?我的表/列生成良好,但我的關係不是作爲FK約束生成的。Sql的Linq - FK不會產生創建數據庫時

我正在嘗試在表格之間創建FK,以便TrackArtist表格可以作爲Track表格的'lookup'表格。

[Table(Name="Track")] 
    public class Track 
    { 
     [Column (IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)] 
     public int Id { get; set; } 

     [Column] 
     private int TrackArtistId {get; set;} 

     private EntityRef<TrackArtist> _trackArtist; 

     [Association(Name="FK_Track_TrackArtist", ThisKey = "TrackArtistId", OtherKey="Id", Storage = "_trackArtist")] 
     public TrackArtist TrackArtist 
     { 
      get { return this._trackArtist.Entity; } 
      set { this._trackArtist.Entity = value; 
      TrackArtistId = value.Id; 
      } 
     } 

     [Column (CanBeNull=false)] 
     public string Description { get; set; } 

    } 

    [Table(Name="TrackArtist")] 
    public class TrackArtist 
    { 
     [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)] 
     internal int Id { get; set; } 

     [Column (CanBeNull=false)] 
     public string Name { get; set; } 
    } 

回答

0

這可能不是你想要的,但值得一提。表鍵字段的命名約定。我會建議使用TableNameId作爲主鍵名稱。 TrackId,TrackArtistId。這樣的命名約定也應該可以幫助你找到錯別字,而這些錯誤並不那麼罕見。此外,在這種情況下,您通常會避免與內部和受保護的關鍵字發生衝突。