Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 首先在实体框架代码中存储基本数据类型集合的最佳方法_Entity Framework_Entity Framework 4_Ef Code First_Entity Framework 4.1_Entity Framework 5 - Fatal编程技术网

Entity framework 首先在实体框架代码中存储基本数据类型集合的最佳方法

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.在单个列中序列化原始数据类型列表,并使用一些分隔符提取项目,编写自己的逻辑将原始数据类型列表保存为单个列,并使用逻辑解析接收到的数据库值以返回到相

我首先使用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();
}
}
}

您需要查询它们吗?还是只需加载/保存一次。列表有多大等等,这就是你应该关注的。这完全取决于手头的情况。