0

我有像这样的桌子

用户(用户 ID、用户名、密码、CreatedOn、CreatedBy)

角色(RoleId、RoleName、描述、CreatedOn、CreatedBy)

UserRoleMap(UserRoleMapId,UserId,RoleId,CreatedOn,CreatedBy)

这些是我的实体:

[ActiveRecord(Table="Users")]
public class User:ActiveRecordBase<User>
{
    [PrimaryKey(Generator = PrimaryKeyType.Identity, Column = "RoleId")]
    public virtual int UserId { get; set; }

    [Property(Column="Username")]
    public virtual string Username { get; set; }

    [Property(Column = "Password")]
    public virtual string  Password { get; set; }

    [Property(Column="CreatedBy")]
    public virtual string CreatedBy { get; set; }

    [Property(Column="CreatedOn")]
    public virtual DateTime CreatedOn { get; set; }

    [HasAndBelongsToMany(Table="UserRoleMap",ColumnKey="UserId")]
    public IList<Role> Roles { get; set; }

}
[ActiveRecord(Table = "Roles")]
public class Role : ActiveRecordBase<User>
{
    [PrimaryKey(Generator = PrimaryKeyType.Identity, Column = "RoleId")]
    public virtual int RoleId { get; set; }

    [Property(Column = "RoleName")]
    public virtual string RoleName { get; set; }

    [Property(Column = "Description")]
    public virtual string Description { get; set; }

    [Property(Column = "CreatedBy")]
    public virtual string CreatedBy { get; set; }

    [Property(Column = "CreatedOn")]
    public virtual DateTime CreatedOn { get; set; }

    [HasAndBelongsToMany(Table = "UserRoleMap", ColumnKey = "RoleId")]
    public IList<User> Users { get; set; }
}

[ActiveRecord(Table="UserRoleMap")]
public class UserRoleMap:ActiveRecordBase<UserRoleMap>
{
    [PrimaryKey(Generator = PrimaryKeyType.Identity, Column = "UserRoleMapId")]
    public virtual int UserRoleMapId { get; set; }

    [BelongsTo(Column="UserId",Table="Users")]
    public virtual User UserId { get; set; }

    [BelongsTo(Column = "RoleId", Table = "Roles")]
    public virtual Role RoleId { get; set; }

}

我不断收到此错误: ActiveRecordSample.Tests.FrameworkInitializationTest.CanInitializaFramework : Castle.ActiveRecord.Framework.ActiveRecordException : 属性 UserId 引用表“Users”,该表在类上没有相应的 [JoinedTable]。

4

1 回答 1

1
  • 只要列名与属性名匹配,就不需要设置 Column="..."
  • User.UserId 映射到列“RoleId”,它应该是“UserId”(或者正如我在上面所说的,只是不要定义它)
  • 确保了解每个 PK 生成器的优缺点
  • 使用 HasAndBelongsToMany 时,您不需要单独的关系类(在您的情况下为 UserRoleMap)。
  • IIRC,您还需要使用 ColumnRef 在 HasAndBelongsToMany 中定义其他FK
于 2011-05-16T22:16:41.883 回答