SubSonic 3不会将外键表生成为属性

时间:2010-05-24 23:13:12

标签: subsonic subsonic3

基本上,我遇到与详细here相同的问题,但在SubSonic 3.0中。不幸的是,我无法弄清楚如何更改SubSonic 3.0中的提供程序。

这是我需要在MySQL.ttinclude,Settings.ttinclude还是其中一个T4模板中更改的内容?或者它在某处配置?

思考?建议?

2 个答案:

答案 0 :(得分:0)

我发现this表示它是按照设计的。我无法想象为什么。我更改了Classes.tt文件以生成单个映射。相关代码如下。但是,这依赖于我的所有PK都被命名为Id的事实,但你应该能够理解。

在IQueryable之前<>生成部分:

if (fk.ThisColumn == "Id")
{ 
   //This is where the standard IQueryable goes
} else {
   //This is what I added
   public <#= fk.OtherTable #> <#= fk.OtherTable #>
   {
      get 
      {
         var db=new <#=Namespace #>.<#=DatabaseName#>DB();
         return from items in db.<#=fk.OtherQueryable #>
                where items.<#=fk.OtherColumn#> == _<#=fk.ThisColumn#>
                select items;
      }
   }
}

希望这会有所帮助。我现在想弄清楚现在做多对多的表:/

答案 1 :(得分:0)

我正在使用Subsonic 2.2,但遇到了同样的问题,但这可以解决我的问题:除了原始提供程序MySqlDataProvider之外,还有扩展版本:MySqlInnoDBDataProvider

因此,在您的web.config中,确保提供者是选择的:

  <add name="MyProvider" 
       type="SubSonic.MySqlInnoDBDataProvider, SubSonic" 
       connectionStringName="WriteConnectionString" 
       generatedNamespace="AttendAnywhere.Data" 
       generateLazyLoads="true" 
       extractClassNameFromSPName="true" />