我有一张表格,其中有一个varbinary(max)
列。我已经放弃了LinqToSql设计器的表格,并将“Delay load”设置为true,因为我不想加载实际的图像数据。 是否有可能只知道列是否为空,而没有获取实际数据,仍然只从数据库执行一个查询? 我也想使用由Linq创建的自动实体。 像新的bool HasImage {get;}
属性就像我正在寻找的东西。将自定义字段添加到LINQ到sql自动生成的实体
回答
Linq to SQL“自动”知道该列是否有值的唯一方法是实际询问数据库。您可以使用字段/属性扩展部分类,但这不会消除查找。
你可以做的一件事是创建一个计算列(假设SQL 2005+在这里,否则你将不得不尝试去适应你的DBMS)。如果您的表看起来像这样,例如:
CREATE TABLE Foo
(
FooID int NOT NULL IDENTITY(1, 1) PRIMARY KEY,
FooName varchar(50) NOT NULL,
FooImage varbinary(max) NULL
)
您将添加计算列这样:
ALTER TABLE Foo
ADD FooHasImage AS CASE
WHEN FooImage IS NULL THEN 0
ELSE 1
END
然后您可以将FooHasImage
列到你的LINQ添加到SQL实体,不要” t延迟加载它,并检查该属性,而不是明确地检查FooImage
属性。
此外,我觉得有必要指出,以这种方式将图像存储在数据库中是次优的。可能有必要,我对你的环境了解不多,但如果你使用的是SQL Server 2008,那么考虑使用FILESTREAM
,因为它将使用廉价的“离线”BLOB存储的文件系统而不是填充整个事物在数据库中。
不知道你Q的实际答案,但如果你没有得到答案:如何在DB中自己做改变。 (当然如果你能控制DB设计的话)。
并将HasImage(或HasContent)列直接放在表中,默认为“false”,当您添加图像时,将其设置为“true”,并且您可以查看该列以查看是否有图像或不。
创建一个部分类
public partial class MyTableObject
{
public bool HasImage { get { return MyColumn.HasValue; } }
}
这可能会引发数据库命中,虽然
我建议增加一个新的列到数据库“HasImage”位,你设置图像上传时或删除
我试过了,但HasValue在延迟加载时似乎总是错误的。它似乎没有触发对数据库的新查询。所以我的测试表明这是不可能的。但我可能忽略了一些东西:-) – Karsten 2010-03-24 14:40:06
- 1. 将自定义代码添加到生成的实体类中
- 2. 将属性添加到自动生成的Linq到SQL类
- 3. Yii2:将字段添加到自动生成的CRUD(自动?)
- 4. 自动生成LINQ到SQL
- 5. 显示在LINQ自定义字段到实体动态选择
- 6. 如何自定义字段添加到jQuery的表单生成
- 7. 将字体重量添加到自定义添加字体的反应原生
- 8. 如何将自定义字段添加到IPB中的窗体
- 9. 实体框架,将图表添加到自定义实体
- 10. LINQ到实体自定义的方法
- 11. c#使用visual studio将自定义方法添加到实体生成的类
- 12. 自动将字体添加到字母
- 13. 集成自定义的方法到LINQ到实体查询
- 14. Linq到实体和自定义属性
- 15. PLINQO/LINQ到SQL - 生成的实体自我保存方法?
- 16. 如何将自定义字体添加到字体真棒?
- 17. 添加自定义输入字段的自动窗体流星
- 18. LINQ实体与LINQ to SQL中的自定义实体
- 19. 将自定义字段添加到特定的cms页面
- 20. 将自定义HTML属性添加到生成的控件
- 21. 如何将自定义条目添加到生成的Android MANIFEST.MF
- 22. 将自定义代码添加到由Automake生成的Makefile中
- 23. 如何自动添加字段到EJB CMP实体bean?
- 24. 添加自定义字体
- 25. 如何将“自定义”日期字段添加到自定义帖子类型?
- 26. 如何将自定义字段添加到自定义帖子类型?
- 27. 将自定义代码添加到greenDAO实体
- 28. 将自定义代码添加到实体框架类
- 29. 将自定义属性添加到实体数据模型
- 30. 将属性添加到实体框架自动生成的属性
这似乎工作得很好!此外,我在设计器中将新列的类型更改为System.Boolean。 – Karsten 2010-03-24 10:19:21