Entity framework 首先在实体框架代码中存储基本数据类型集合的最佳方法
我首先使用EF代码作为我的项目的ORM技术,在这个项目中,域模型有许多原始数据类型的集合。 存储基本数据类型集合的可能解决方案有哪些?哪种是最佳解决方案 我知道的解决方案如下: 1.**创建一个不同的类,该类将保存我们要使用其集合的原始数据类型的属性,而不是直接使用该原始类型的集合,而是使用新创建的类的集合,**对此场景的更好解释如下:**** 2.在单个列中序列化原始数据类型列表,并使用一些分隔符提取项目,编写自己的逻辑将原始数据类型列表保存为单个列,并使用逻辑解析接收到的数据库值以返回到相应的数据类型集合Entity framework 首先在实体框架代码中存储基本数据类型集合的最佳方法,entity-framework,entity-framework-4,ef-code-first,entity-framework-4.1,entity-framework-5,Entity Framework,Entity Framework 4,Ef Code First,Entity Framework 4.1,Entity Framework 5,我首先使用EF代码作为我的项目的ORM技术,在这个项目中,域模型有许多原始数据类型的集合。 存储基本数据类型集合的可能解决方案有哪些?哪种是最佳解决方案 我知道的解决方案如下: 1.**创建一个不同的类,该类将保存我们要使用其集合的原始数据类型的属性,而不是直接使用该原始类型的集合,而是使用新创建的类的集合,**对此场景的更好解释如下:**** 2.在单个列中序列化原始数据类型列表,并使用一些分隔符提取项目,编写自己的逻辑将原始数据类型列表保存为单个列,并使用逻辑解析接收到的数据库值以返回到相
所以,上面两个是我已知的解决方案,但我想知道哪一个是存储原始数据类型集合的最佳解决方案第一个解决方案是在数据库中存储集合类型的最佳方法。换句话说,您必须为您的基元类型定义一个类,然后在两个类之间建立关系。在阅读并尝试了这么多选项之后,我发现 上述两种策略都增加了复杂性、数据检索和保存 因此,最好的方法(在我看来)是将原始数据类型集合序列化为数据库中的字节数组,并反序列化数据数据库:
Class Sample
{
[NotMapped]
Public List<String>Strings { get; set; }
Public Byte[] StringBytes
{
get
{
var binaryfomrate = new BinaryFormatter();
var memoryStream = new MemoryStream();
binaryFormatter.searilze(ms, this.Strings);
return ms.ToArray();
}
set
{
var binaryfomrater = new BinaryFormatter();
this.Strings = binaryFormtter.Deserialize(value) as List<String>();
}
}
}
类示例
{
[未映射]
公共列表字符串{get;set;}
公共字节[]字符串字节
{
得到
{
var binaryfomrate=新的二进制格式化程序();
var memoryStream=新的memoryStream();
searilze(ms,this.Strings);
返回ToArray女士();
}
设置
{
var binaryfomratter=新的二进制格式化程序();
this.Strings=binaryFormtter.Deserialize(value)为List();
}
}
}
您需要查询它们吗?还是只需加载/保存一次。列表有多大等等,这就是你应该关注的。这完全取决于手头的情况。