Простой вопрос о LINQ to SQL - PullRequest
2 голосов
/ 28 мая 2011

Я не могу понять одну вещь.Предположим, у меня уже есть эти закодированные сущности:

[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 создает их?

1 Ответ

5 голосов
/ 28 мая 2011

Если у вас уже есть база данных, вы подключаетесь к ней из Visual Studio и перетаскиваете таблицы в режим разработки вашего DataContext.Затем Visual Studio сгенерирует соответствующие классы для вас.

В качестве альтернативы, и, вероятно, ответ, который вам нужен, заключается в том, что у вас уже есть сгенерированные классы (например: из другой системы с базой данных), и выхотите создать базу данных в соответствии с определениями вашего класса.Затем, где-то в начале вашего кода, вы должны вызвать один раз DataContext.CreateDatabase (как также отметил Reniuz), и база данных будет создана.Обратите внимание, что при следующем запуске вам не нужно снова создавать базу данных.

...