SubSonic 3和复合外键

时间:2009-10-30 02:48:43

标签: subsonic3

我目前正在评估SubSonic 3与遗留数据库一起使用 - IE几乎没有能力改变当前的结构。

长话短篇SubSonic 2很好地处理了我们的复合外键 - 但是我们正在寻找能够提供linq以及SS3所有其他功能的东西。

到目前为止,我发现使用ActiveRecord.tt和Classes.tt T4模板的SS3我的关系非常混乱。

我注意到如果属性后缀为“x”,则外键中的逻辑不包含“x” - 示例生成的代码如下。

    #region Properties

    partial void OnAUDIT_TYPEXChanging(int value);
    partial void OnAUDIT_TYPEXChanged();

    private int _AUDIT_TYPEX;
    public int AUDIT_TYPEX { 
        get{
            return _AUDIT_TYPEX;
        } 
        set{
            this.OnAUDIT_TYPEXChanging(value);
            this.SendPropertyChanging();
            this._AUDIT_TYPEX = value;
            this.SendPropertyChanged("AUDIT_TYPEX");
            this.OnAUDIT_TYPEXChanged();
        }
    }
    #region Foreign Keys
    public IQueryable<COMPANY_AUDIT_TYPE> COMPANY_AUDIT_TYPES
    {
        get
        {
              var db=new DB();
              return from items in db.COMPANY_AUDIT_TYPES
                   where items.AUDIT_TYPE == _AUDIT_TYPE // ERROR HERE NO "X" SUFFIX, SHOULD BE _AUDIT_TYPEX
                   select items;
        }
    }

当发生器到达复合键时,它们也会完全死亡。它们生成四个并开始混合comparsomes,而不是生成一个属性。看下面生成的代码

    #region Foreign Keys
    public IQueryable<EMPLOYEE> EMPLOYEES
    {
        get
        {
              var db=new DB();
              return from items in db.EMPLOYEES
                   where items.COMPANY_ID == _COMPANY_ID
                   select items;
        }
    }

    public IQueryable<EMPLOYEE> EMPLOYEES1
    {
        get
        {
              var db=new DB();
              return from items in db.EMPLOYEES
                   where items.EMPLOYEE_NUM == _COMPANY_ID
                   select items;
        }
    }

    public IQueryable<EMPLOYEE> EMPLOYEES2
    {
        get
        {
              var db=new DB();
              return from items in db.EMPLOYEES
                   where items.COMPANY_ID == _EMPLOYEE_NUM
                   select items;
        }
    }

    public IQueryable<EMPLOYEE> EMPLOYEES3
    {
        get
        {
              var db=new DB();
              return from items in db.EMPLOYEES
                   where items.EMPLOYEE_NUM == _EMPLOYEE_NUM
                   select items;
        }
    }

理想情况下它会生成

    #region Foreign Keys
    public IQueryable<EMPLOYEE> EMPLOYEES
    {
        get
        {
              var db=new DB();
              return from items in db.EMPLOYEES
              where items.COMPANY_ID == _COMPANY_ID && EMPLOYEE_NUM == _EMPLOYEE_NUM
                   select items;
        }
    }

SS3是否正确支持复合外键,我的结果让我担心它没有。

0 个答案:

没有答案