2011-05-28 165 views
2

我無法理解一件事。假設我已經有這些編碼實體:關於LINQ to SQL的簡單問題

[Table(Name = "Rates")] 
public class Rate 
{ 
    private EntityRef<Product> _Product; 

    [Column(IsPrimaryKey = true)] 
    public String RateID 
    { get; set; } 
    [Column] 
    public String ProductID 
    { get; set; } 
    [Column] 
    public Double VolumeInTons 
    { get; set; } 
    [Column] 
    public Decimal Volume 
    { get; set; } 
    [Column] 
    public Decimal Cost 
    { get; set; } 
    [Column] 
    public UInt32 Year 
    { get; set; } 

    [Association(Storage = "_Product", OtherKey = "ProductID")] 
    public Product Product 
    { 
     get { return this._Product.Entity; } 
     set { this._Product.Entity = value; } 
    } 
} 

而且

[Table(Name="Products")] 
public class Product 
{ 
    private EntitySet<Rate> _Rates; 

    [Column(IsPrimaryKey= true)] 
    public String ProductID 
    { get; set; } 
    [Column] 
    public String Name 
    { get; set; } 
    [Column] 
    public String Category 
    { get; set; } 

    [Association(Storage="_Rates", OtherKey="ProductID")] 
    public EntitySet<Rate> Rates 
    { 
     get { return this._Rates; } 
     set { this._Rates.Assign(value); } 
    } 
} 
  • 我應該有一個物理數據庫具有相同表定義連接(在我的應用程序中使用的DataContext)?
  • 假設我已經創建了一個數據庫。它應該包含相同的表定義還是LINQ to SQL創建它們?
+2

看看[這個](http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.createdatabase.aspx)方法 – Reniuz 2011-05-28 06:31:53

回答

5

如果您已有數據庫,則從Visual Studio連接到該數據庫,然後將這些表拖放到DataContext的設計模式中。 Visual Studio會爲你生成相應的類。

或者,您可能會遇到的答案是您已經擁有生成的類(例如:來自與數據庫不同的系統),並且您希望根據類定義創建數據庫。那麼你應該在你的代碼早期的某個地方調用一次DataContext.CreateDatabase(Reniuz也提到過),並創建數據庫。請注意,在下次運行時,不需要再次創建數據庫。

+0

好的。我已經看到了實現這一目標的例程。所以我應該從'DataContext'繼承,並且只使用它的所有表格的組合? – lexeme 2011-05-28 07:01:33