Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
C# NHibernate:对关系和主键使用一列,此SqlParameterCollection的索引无效_C#_.net_Nhibernate_Foreign Keys_Composite Id - Fatal编程技术网

C# NHibernate:对关系和主键使用一列,此SqlParameterCollection的索引无效

C# NHibernate:对关系和主键使用一列,此SqlParameterCollection的索引无效,c#,.net,nhibernate,foreign-keys,composite-id,C#,.net,Nhibernate,Foreign Keys,Composite Id,我已经为我的NHibernate数据库模型定义了一个复合id。我也使用了外键关系中定义的一列。如果使用NHibernate插入对象,则会出现以下异常: System.IndexOutOfRangeException:此SqlParameterCollection的索引7无效,计数为7。 位于System.Data.SqlClient.SqlParameterCollection.RangeCheck(Int32索引) 位于System.Data.SqlClient.SqlParameterCol

我已经为我的NHibernate数据库模型定义了一个复合id。我也使用了外键关系中定义的一列。如果使用NHibernate插入对象,则会出现以下异常:

System.IndexOutOfRangeException:此SqlParameterCollection的索引7无效,计数为7。
位于System.Data.SqlClient.SqlParameterCollection.RangeCheck(Int32索引)
位于System.Data.SqlClient.SqlParameterCollection.GetParameter(Int32索引)
在NHibernate.Type.Int32Type.Set处(IDBRS命令,对象值,Int32索引)
在NHibernate.Type.NullableType.NullSafeSet(IDbCommand cmd,Object value,Int32 index)中
在NHibernate.Type.NullableType.NullSafeSet(IDBST命令,对象值,Int32索引,ISessionImplementor会话)
在NHibernate.Type.ComponentType.NullSafeSet(IDBST命令,对象值,Int32 begin,ISessionImplementor会话)
在NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(对象id、对象[]字段、对象rowId、布尔[]includeProperty、布尔[][][]includeColumns、Int32表、IDbCommand语句、ISessionImplementor会话、Int32索引)
在NHibernate.Persister.Entity.AbstractEntityPersister.Insert(对象id、对象[]字段、布尔值[]notNull、Int32 j、SqlCommandInfo sql、对象obj、ISessionImplementor会话)
在NHibernate.Persister.Entity.AbstractEntityPersister.Insert(对象id、对象[]字段、对象obj、ISessionImplementor会话)
在NHibernate.Impl.statelessessionImpl.Insert(字符串entityName,对象实体)
在NHibernate.Impl.statelessessionImpl.Insert(对象实体)处

是否可以将一列用于两个不同的目的(外键关系和主键)

C#NHibernate型号

public const string STR_ID = "Id";
public const string STR_SHARDKEY = "ShardKey";
public const string STR_OTHERMODEL = "OtherModel";

[CompositeId(-4)]
[KeyProperty(-3, Name = STR_ID, Column = STR_ID)]
[KeyProperty(-2, Name = STR_SHARDKEY , Column = STR_SHARDKEY )]
[Generator(-1, Class = "guid.comb")]
public virtual Guid? Id { get; set; }

[Column(Name = STR_SHARDKEY )]
public virtual int ShardKey{ get; set; }

[ManyToOne(0)]
[Column(1, Name = STR_OTHERMODEL )]
[Column(2, Name = STR_SHARDKEY )]
public virtual OtherModel OtherModel { get; set; }
XML映射