我知道亚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.DALYour.Namespace.LegacyDAL

  • 用旧名称空间中的ActivereCord模板创建DAL
  • 如果使用InlineQuery,则类名称更改为CodingHorror
  • 修复所有编译器错误(也许生成的属性名称 /类型有点不同)
  • 如果需要,请重写查询
  • 如果您正在使用亚音速迁移:坚持使用它们,因为在subsonic3中没有同骨替换
  • 测试,测试,测试!!!直到一切正常
  • 仅对新任务使用subsonic3功能(例如LINQ)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top