有没有一种方法可以使用T4模板与亚音速2.2
-
28-09-2019 - |
题
我知道亚sosonic 3.0是最新和最伟大的,并且我知道亚sosonic 3.0具有T4模板。
但是亚音速3.0与亚音速2.2不兼容,这意味着我的项目带有数百个代码文件,在亚音速2.2查询语言中编写的代码文件将在亚音速3.0中不起作用。
因此,我的问题是:是否有人为subsonic 2.2制作的T4模板来替换其创建的生成的文件。我的数据库很大,生成的文件量变得有些疯狂。
是否有人制定了这种能力,或者有人制作了自定义工具来帮助升级路径?
谢谢阅读
解决方案
亚音速3是核心的巨大回顾,使用了一些新技术,例如T4,而不是其自己的模板并提供LINQ查询引擎。
但是,仍然可以使用大多数好旧功能,例如查询工具。
如果您这样做:
var p = new Product();
p.ProductName = "new product";
p.Save();
或这个
var p = DB.Select()
.From<Product>()
.Where(Product.ProductCode).IsEqualTo("1234")
.ExecuteSingle<Product>();
这仍然可以与subsonic3一起使用
如果您足够勇敢,我对升级路径的建议将是:
- 确保您的DAL使用“ GenerateNullable Properties = true”
如果不重新创建并修复可能的编译器 /运行时例外:
if (p.QuantityHasValue) p.Total = p.Quantity * p.Price; // changes to if (p.Quantity.HasValue) p.Total = p.Quantity * p.Price;
更改您生成的文件的名称空间
Your.Namespace.DAL
到Your.Namespace.LegacyDAL
- 用旧名称空间中的ActivereCord模板创建DAL
- 如果使用InlineQuery,则类名称更改为CodingHorror
- 修复所有编译器错误(也许生成的属性名称 /类型有点不同)
- 如果需要,请重写查询
- 如果您正在使用亚音速迁移:坚持使用它们,因为在subsonic3中没有同骨替换
- 测试,测试,测试!!!直到一切正常
- 仅对新任务使用subsonic3功能(例如LINQ)
不隶属于 StackOverflow