我发现可以使用查询在查询中查找varbinary字段的长度。
Entity framework and VARBINARY
但是,您是否可以映射FileSize属性以在Fluent API中获取varbinary的大小而无需编写查询?
我希望能够在SQL Server中存储一些文件信息。此数据是文件名,文件内容。这在数据模型中有一个定义如下:
public class FileData
{
public int Id { get; set; }
public string Filename { get; set; }
public byte[] Contents { get; set; }
}
通常,我想知道检索FileData时内容的大小。如果我将一个int属性FileSize添加到FileData,你可以映射这个属性来计算大小吗?
我可以在SQL中配置它:
当我插入表格时,它给了我正确的尺寸。
但是,如果我使用VS2015生成我的数据模型/ DbContext - >添加新项目... - > ADO.NET实体数据模型,我的FileData POCO只在FileSize属性上有一个带有DatabaseGenerated(DatabaseGeneratedOption.Computed)的注释。没有别的东西反映我添加的len(内容)公式。
是否可以使用EF6 Code First配置此类计算列?
答案 0 :(得分:2)
您无法首先在实体框架代码中创建计算列。您执行此操作的方式是正确的,您只需将DatabaseGenerated(DatabaseGeneratedOption.Computed)
属性放在属性上,Entity Framework
不会尝试为您创建列,然后创建列手动。一个好主意是将属性设置为私有,因为您不需要手动修改它:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? FileSize {get; private set;}