Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fluent nhibernate 由于约束冲突而中止列GroupId、idx不是唯一的_Fluent Nhibernate - Fatal编程技术网

Fluent nhibernate 由于约束冲突而中止列GroupId、idx不是唯一的

Fluent nhibernate 由于约束冲突而中止列GroupId、idx不是唯一的,fluent-nhibernate,Fluent Nhibernate,我使用的是FluentNHibernate,并且已经进行了多对多映射,但是当我尝试保存实体时,出现以下错误: NHibernate.Exceptions.GenericADOException: NHibernate.Exceptions.GenericADOException : could not insert collection: [Test.Entities.Recipient.Groups#b6815d34-f436-4142-9b8e-1bfcbf25509e][SQL: SQL

我使用的是FluentNHibernate,并且已经进行了多对多映射,但是当我尝试保存实体时,出现以下错误:

NHibernate.Exceptions.GenericADOException: NHibernate.Exceptions.GenericADOException
: could not insert collection: [Test.Entities.Recipient.Groups#b6815d34-f436-4142-9b8e-1bfcbf25509e][SQL: SQL not available]
---- System.Data.SQLite.SQLiteException : Abort due to constraint violation
columns GroupId, idx are not unique
以下是我的映射:

public class GroupMap : ClassMap<Group>
{
    public GroupMap()
    {
        Id(x => x.Id).GeneratedBy.Guid();
        Map(x => x.Name);
        Map(x => x.SenderName);
        Map(x => x.Created);
        HasManyToMany(x => x.Recipients)
            .AsList()
            .WithTableName("groups_recipients")
            .WithParentKeyColumn("GroupId")
            .WithChildKeyColumn("RecipientId")
            .LazyLoad()
            .Cascade.AllDeleteOrphan();
    }
}

public class RecipientMap : ClassMap<Recipient>
{
    public RecipientMap()
    {
        Id(x => x.Id).GeneratedBy.Guid();
        Map(x => x.Firstname);
        Map(x => x.Lastname);
        Map(x => x.Phone);
        Map(x => x.Email);
        HasManyToMany(x => x.Groups)
            .AsList()
            .WithTableName("groups_recipients")
            .WithParentKeyColumn("RecipientId")
            .WithChildKeyColumn("GroupId")
            .LazyLoad().Cascade.None();
    }
}
公共类组映射:类映射
{
公共组映射()
{
Id(x=>x.Id).GeneratedBy.Guid();
Map(x=>x.Name);
Map(x=>x.SenderName);
映射(x=>x.Created);
HasManyToMany(x=>x.Recipients)
.AsList()
.WithTableName(“组\收件人”)
.WithParentKeyColumn(“组ID”)
.WithChildKeyColumn(“接收方ID”)
.LazyLoad()
.Cascade.AllDeleteOrphan();
}
}
公共类RecipientMap:ClassMap
{
公共RecipientMap()
{
Id(x=>x.Id).GeneratedBy.Guid();
Map(x=>x.Firstname);
Map(x=>x.Lastname);
地图(x=>x.Phone);
Map(x=>x.Email);
HasManyToMany(x=>x.Groups)
.AsList()
.WithTableName(“组\收件人”)
.WithParentKeyColumn(“接收方ID”)
.WithChildKeyColumn(“组ID”)
.LazyLoad().Cascade.None();
}
}
这个问题似乎与关系表id有关,但我不知道如何解决它

干杯,
nandarya使用AsList()不是一个好主意。应该是AsBag()。而且似乎一切都正常。

使用AsList()不是一个好主意。应该是AsBag()。而且一切似乎都正常。

首先,您可以将show_sql设置为true:)在调试时帮助很大。。打印到首秀窗口的提示:实际上我已经设置了“SQLiteConfiguration.Standard.InMemory().ShowSql()”,所以我应该获取SQL。但是在我收到的错误消息中:[SQL:SQL不可用]首先,您可以将show_SQL设置为true:)在调试时帮助很大。。打印到首秀窗口的提示:实际上我已经设置了“SQLiteConfiguration.Standard.InMemory().ShowSql()”,所以我应该获取SQL。但在我收到的错误消息中:[SQL:SQL不可用]似乎也发生在某些一对多映射中。使用AsBag()似乎也解决了某些一对多映射的问题。使用AsBag()解决了这个问题