尖锐架构HasOne关系的问题

时间:2011-12-07 20:42:34

标签: c# asp.net fluent-nhibernate s#arp-architecture one-to-one

我正在构建ASP.NET成员资格提供程序的直接端口,从SQL到Sharp Arch 1.9.6(使用Fluent NHibernate)。尝试在aspnet_Users和aspnet_Membership表之间创建一对一关系时会出现此问题。这是我到目前为止所做的:

public class User : EntityWithTypeId<Guid>
{
    public virtual Membership Membership { get; set; }
}

public class Membership : EntityWithTypeId<Guid>
{
    public virtual User User { get; set; }
}

public class UserMap : IAutoMappingOverride<User>
{
    public void Override(AutoMapping<User> mapping)
    {
        mapping.Table("aspnet_Users");
        mapping.HasOne(x => x.Membership)
            .PropertyRef(r => r.User)
            .Cascade.All();
    }
}

public class MembershipMap : IAutoMappingOverride<Membership>
{
    public void Override(AutoMapping<Membership> mapping)
    {
        mapping.Table("aspnet_Membership");

        mapping.Id(x => x.Id)
            .Column("UserId")
            .GeneratedBy.Foreign("User");
        mapping.HasOne(x => x.User)
            .ForeignKey("Membership_User_FK_Manual")
            .Constrained();
    }
}

其余的属性都已配置,但为了尽可能缩短帖子,我只列出了必要的信息。

Sharp Arch生成数据库架构的单元测试正确显示了表之间的一对一映射。

问题是当我使用Sharp Arch提供的存储库从数据库中检索用户时。我收到一个错误:

NHibernate.PropertyAccessException : Invalid Cast (check your mapping for property type mismatches); setter of TrackerI9.Core.Providers.Entities.Membership
  ----> System.InvalidCastException : Specified cast is not valid.

我正在使用SQLite作为我的数据库进行测试,并从INSERT语句中获取输出到测试控制台我已经验证数据正确地插入数据库并使用适当的ID。如果需要,我可以包括它们和堆栈跟踪。

我已经在这方面工作了一个星期,但没有找到任何解决方案。我总是可以把两张桌子连成一张然后继续前进,但正如我上面所说,我更喜欢做一个DIRECT端口。

让我知道你的想法。

0 个答案:

没有答案
相关问题