我在POCO类和我的数据库之间有一个Linq-To-Sql映射。我希望能够在我的类上添加属性,这些属性表示比简单的scalr值稍微复杂的构造。
例如,我有一个自定义结构类型,它包含两个简单的标量值。我不想再创建另一个表,然后添加一个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.A
和Yada.B
都作为Foo
表上的列保留?
甚至可以这样做吗?
答案 0 :(得分:1)
我认为.NET4中的实体框架是完成此任务所必需的。有关复杂类型和实体的信息,请参阅this blog post。
答案 1 :(得分: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
类型比简单地包含值更多。