11

我有一种情况,我有一个具有 type 属性的类型object,例如。

public class MyType
{
   public virtual object MyProp{get; get;}
}

这种类型必须是:

  1. 使用保存Entity Framework到数据库中,作为byte[](我已经计算出序列化逻辑)
  2. 通过WCF传输(我将使用KnownType属性)

如何映射我的object属性以确保将其转换为字节数组进行存储?

注意:该object属性将是一个值类型(非复杂)

我想创建一个单独的类型来保存到数据库,例如:

public class MyTypeEntity
{
   public virtual byte[] MyProp{get; get;}
}

如何在仍然能够定义关系映射的同时在类型之间进行转换/翻译?

这是否涉及对储蓄的某种拦截?

我能想到的最好的解决方案就是简单地将序列化数据存储在数据库中。

如果property covariance在 C# 中有某种形式,也许这会更容易。据我所知,它不存在。如果有我可以使用的优雅替代方案,我将不胜感激您的洞察力。

4

1 回答 1

23

我建议byte[]在您的实体上保留一个字段;你的班级应该尽可能地模仿数据库结构。我过去做过类似的事情的一种方法是创建一个单独的类文件(记住,你的实体是)并向第二个文件partial添加一个属性。NotMapped您可以让 getter 和 setter 在代码中进行转换objectbyte[]只需始终与objectEF 将忽略的属性进行交互。这非常轻松,EF 仍会将varbinary字段跟踪到byte[]您不直接访问的字段。

于 2015-03-24T19:19:25.853 回答