2009-12-19 4 views
1

У меня есть сопоставление Linq-To-Sql между классами POCO и моей БД. Я хочу иметь возможность добавлять свойства на мои классы, которые представляют собой несколько более сложные конструкции, чем простые значения scalr.Как сгладить сопоставления таблиц Linq-To-Sql?

Например, у меня есть собственный тип структуры, который содержит два простых значения. Я не хочу делать эту другую таблицу, а затем добавлять FK как свойство. Возможно ли сопоставить свойства этой структуры с помощью файла сопоставления XML Linq-to-Sql?

Например,

public class Foo 
{ 
    public string Blah { get; set; } 
    public Bar Yada { get; set; } 
} 

public struct Bar 
{ 
    public int A { get; set; } 
    public int B { get; set; } 
} 

Как бы указать, что Blah, Yada.A и Yada.B все сохранялось в виде столбцов на Foo таблицы?

Можно ли это сделать?

ответ

1

Это действительно хромой, но звучит так, как будто это должно быть то, что я должен делать, если я придерживаюсь L2S.

public class Foo 
{ 
    public string Blah { get; set; } 

    public int Bar_A { get; set; } 
    public int Bar_B { get; set; } 

    /* not mapped to DB */ 
    public Bar Yada 
    { 
     get { return new Bar { A = this.Bar_A, B = this.Bar_B }; } 
     set { this.Bar_A = value.A; this.Bar_B = value.B; } 
    } 
} 

public struct Bar 
{ 
    public int A { get; set; } 
    public int B { get; set; } 
} 

Конечно, в реальном коде, я бы, вероятно, сделать это таким образом, чтобы он не создавал ценности снова и снова, потому что мой реальный Bar типа имеет больше, чем просто содержащее значение.

1

Я думаю, что Entity Framework в .NET4 требуется для этого. См. this blog post о сложных типах и объектах.

+0

Спасибо за подсказку. Я действительно надеюсь использовать LINQ-to-SQL для этого небольшого приложения. Если бы я прыгнул в EF, мне действительно пришлось бы отступить и посмотреть на NHibernate и другие. – mckamey

Смежные вопросы