Entity Framework 6 Code First VarBinary 映射或计算列中的长度
Entity Framework 6 Code First VarBinary Length in mapping or computed column
我发现可以使用查询来查找查询中 varbinary 字段的长度。
Entity framework and VARBINARY
但是您可以在 Fluent API 中映射 FileSize 属性 来获取 varbinary 的大小而无需编写查询吗?
我希望能够在SQL 服务器中存储一些文件信息。此数据是文件名、文件内容。这在数据模型中有如下定义:
public class FileData
{
public int Id { get; set; }
public string Filename { get; set; }
public byte[] Contents { get; set; }
}
通常,我想在检索 FileData 时知道内容的大小。如果我将一个 int 属性 FileSize 添加到 FileData,你可以映射这个 属性 来计算大小吗?
我可以在 SQL 中配置它:
当我插入 table 时,它给出了正确的尺寸。
但是,如果我使用 VS2015 生成我的数据 model/DbContext -> 添加新项... -> ADO.NET 实体数据模型,我的 FileData POCO 只有带有 DatabaseGenerated(DatabaseGeneratedOption.Computed) 在 FileSize 属性 上。没有其他反映我添加的 len(Contents) 公式。
是否可以使用 EF6 Code First 配置这种计算列?
您不能先在 entity framework 代码中创建计算列。你这样做的方式是正确的,你只是把 DatabaseGenerated(DatabaseGeneratedOption.Computed)
属性放在 属性 上,Entity Framework
不会尝试为你创建列,你创建列手动。一个好主意是将 属性 设置为私有集,因为您永远不需要手动修改它:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? FileSize {get; private set;}
我发现可以使用查询来查找查询中 varbinary 字段的长度。
Entity framework and VARBINARY
但是您可以在 Fluent API 中映射 FileSize 属性 来获取 varbinary 的大小而无需编写查询吗?
我希望能够在SQL 服务器中存储一些文件信息。此数据是文件名、文件内容。这在数据模型中有如下定义:
public class FileData
{
public int Id { get; set; }
public string Filename { get; set; }
public byte[] Contents { get; set; }
}
通常,我想在检索 FileData 时知道内容的大小。如果我将一个 int 属性 FileSize 添加到 FileData,你可以映射这个 属性 来计算大小吗?
我可以在 SQL 中配置它:
当我插入 table 时,它给出了正确的尺寸。
但是,如果我使用 VS2015 生成我的数据 model/DbContext -> 添加新项... -> ADO.NET 实体数据模型,我的 FileData POCO 只有带有 DatabaseGenerated(DatabaseGeneratedOption.Computed) 在 FileSize 属性 上。没有其他反映我添加的 len(Contents) 公式。
是否可以使用 EF6 Code First 配置这种计算列?
您不能先在 entity framework 代码中创建计算列。你这样做的方式是正确的,你只是把 DatabaseGenerated(DatabaseGeneratedOption.Computed)
属性放在 属性 上,Entity Framework
不会尝试为你创建列,你创建列手动。一个好主意是将 属性 设置为私有集,因为您永远不需要手动修改它:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? FileSize {get; private set;}