Как сгладить сопоставления таблиц Linq-To-Sql? - PullRequest
1 голос
/ 20 декабря 2009

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

Например, у меня есть собственный тип структуры, который содержит два простых скалярных значения. Я не хочу делать эту другую таблицу, а затем добавить FK в качестве свойства. Можно ли отобразить свойства этой структуры с помощью XML-файла сопоставления Linq-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?

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

Ответы [ 2 ]

1 голос
/ 20 декабря 2009

Это действительно неубедительно, но звучит так, как будто это может быть то, что мне нужно сделать, если я останусь с 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 голос
/ 20 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...