1

我在 POCO 类和我的数据库之间有一个 Linq-To-Sql 映射。我希望能够在我的类上添加属性,这些属性表示比简单的标量值稍微复杂的构造。

例如,我有一个自定义结构类型,它包含两个简单的标量值。我不想把它变成另一个表,然后添加一个 FK 作为属性。是否可以使用 Linq-to-Sql XML 映射文件映射此结构的属性?

例如,

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.AYada.B都作为表中的列保存Foo

这甚至可以做到吗?

4

2 回答 2

1

我认为 .NET4 中的实体框架是完成这项工作所必需的。请参阅这篇关于复杂类型和实体的博文。

于 2009-12-19T23:44:36.930 回答
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类型不仅仅是包含值。

于 2009-12-20T20:10:26.200 回答