the*_*ric 5 .net c# database nhibernate fluent-nhibernate
我正在使用使用字符串作为主键的brownfield数据库.使用Fluent NHibernate和Sqlite(内存提供程序进行单元测试)和SQL Server 2005.
我有以下实体:
public class Entity
{
public virtual DateTime TimeStamp { get; set; }
public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有了这个映射:
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
Map(_ => _.TimeStamp);
Id(_ => _.Name).CustomType("AnsiString");
}
}
Run Code Online (Sandbox Code Playgroud)
然而它说不起作用 NHibernate.TypeMismatchException : Provided id of the wrong type. Expected: System.Int32, got System.String
如何使这项工作?另外,有没有关于流利的nhibernate可用的良好文档?
提前致谢.
Col*_*e W 12
如果您使用字符串作为主键,则可能需要执行以下操作:
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
Id(x => x.Name).GeneratedBy.Assigned();
Map(x => x.TimeStamp);
}
}
Run Code Online (Sandbox Code Playgroud)
从nhibernate文档:
5.1.4.7.分配的标识符
如果您希望应用程序分配标识符(而不是让NHibernate生成它们),您可以使用指定的生成器.此特殊生成器将使用已分配给对象的标识符属性的标识符值.使用此功能时,请务必小心分配具有商业含义的键(几乎总是一个糟糕的设计决定).
由于其固有特性,使用此生成器的实体无法通过ISession的SaveOrUpdate()方法保存.相反,如果要通过调用ISession的Save()或Update()方法来保存或更新对象,则必须明确指定NHibernate.
这里还有一篇相关文章.它有点过时但仍适用于您的情况:
http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/6c9620b7c5bb7ca8
| 归档时间: |
|
| 查看次数: |
3342 次 |
| 最近记录: |