jon*_*nas 24 .net c# entity-framework fluent-interface ef-code-first
如何使用Entity Framework Code-First将数组的双精度数据存储到数据库中,而不影响现有代码和体系结构设计?
我查看了Data Annotation和Fluent API,我还考虑将double数组转换为字节字符串,并将该字节存储到自己的列中的数据库中.
我无法使用public double[] Data { get; set; }Fluent API 访问该属性,我得到的错误消息是:
该类型
double[]必须是非可空值类型才能将其用作参数"T".
Data存储的类成功存储在数据库中,以及与此类的关系.我只是错过了Data专栏.
Jof*_*ern 44
你可以这样做:
[NotMapped]
public double[] Data
{
get
{
string[] tab = this.InternalData.Split(',');
return new double[] { double.Parse(tab[0]), double.Parse(tab[1]) };
}
set
{
this.InternalData = string.Format("{0},{1}", value[0], value[1]);
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
public string InternalData { get; set; }
Run Code Online (Sandbox Code Playgroud)
jon*_*nas 25
感谢大家的投入,由于你的帮助,我能够找到解决这个问题的最佳方法.这是:
public string InternalData { get; set; }
public double[] Data
{
get
{
return Array.ConvertAll(InternalData.Split(';'), Double.Parse);
}
set
{
_data = value;
InternalData = String.Join(";", _data.Select(p => p.ToString()).ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
感谢这些stackoverflow帖子: 字符串到双打数组和 双打数组到字符串
我知道它有点贵,但你可以做到这一点
class Primitive
{
public int PrimitiveId { get; set; }
public double Data { get; set; }
[Required]
public Reference ReferenceClass { get; set; }
}
// This is the class that requires an array of doubles
class Reference
{
// Other EF stuff
// EF-acceptable reference to an 'array' of doubles
public virtual List<Primitive> Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,这将把单个实体(此处为'Reference')映射到Primitive类的'list'.这基本上是为了让SQL数据库感到高兴,并允许您适当地使用您的数据列表.
这可能不适合您的需求,但会让EF感到高兴.
| 归档时间: |
|
| 查看次数: |
27785 次 |
| 最近记录: |