我创建了一个自定义C#(4.0)类,用于EF(4.1)模型类的属性。此自定义类的唯一属性是Guid作为其类型。现在,我有兴趣知道是否可以将我的自定义类序列化为模型表上的Guid列,就好像它是一种原始类型(由SQL Server 2008 R2支持)。
具体来说,我不希望使用普通Guid作为属性,因为模型属性在概念上具有来自Guid的远距离意义和功能。我不会将Guid用作主键。相反,我将使用它作为外键来访问具有非主Guid列/属性的另一个表/集合(以及具有相同Guid的多个行/实例)。这可能听起来很牵强,但对于这个特定目的而言,这将是非常方便的设计。
答案 0 :(得分:1)
我认为以下方法可能适用于EF:
就EF而言,您只拥有Guid
属性,但只要您的模型知道您何时编码,您就拥有自定义类型属性。
创建隐式转换:
public class MyClass
{
public Guid Key { get; set; }
public static implicit operator Guid(MyClass c)
{
return c.Key;
}
public static implicit operator MyClass(Guid g)
{
return new MyClass { Key = g; }
}
}