c# - 将对象类型属性映射到 Entity Framework 中的 varbinary(MAX)

标签 c# entity-framework wcf ef-fluent-api

我有一种情况,我有一个类型,其属性类型为 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;}
}

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

这是否涉及对保存的某种拦截?

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

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

最佳答案

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

关于c# - 将对象类型属性映射到 Entity Framework 中的 varbinary(MAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224660/

相关文章:

c# - 如何以编程方式从模板 excel 工作表创建 excel 工作表?

c# - 我应该如何设计我的业务层来根据配置设置处理 Sql Server 和 Mongo DB

wcf - 我可以使用独立的WCF Web服务更改错误页面(404)吗?

entity-framework - 什么是 Entity Framework ?我们为什么使用它?

c# - Entity Framework 中循环引用的 WCF Datacontract 序列化问题

rest - 从 REST 服务方法返回原始字符串

c# - 重写方法(返回类型 DBDataReader)并返回不同类型(SQLDBDataReader)

c# - 寻找最长的重叠周期

c# - 使用 PrimarySearcher 进行单级搜索

sql - 如何实现一个 "Is Current"需求的一对多关系