我使用了Ayende的博客中关于NHibernate单元测试的代码,它要求使用SQLite进行测试,代码如下:
using System;
using System.Reflection;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;
using NHibernate.Tool.hbm2ddl;
using Environment = NHibernate.Cfg.Environment;
namespace WebAPI.Tests
{
/// &
我的公司有多个网站,其中引用相同的DB和核心代码库。然后我们有一个CMS来管理数据。
在Core库中,我有一个site类,其中包含有关每个站点的一组基本信息。这是我对它的流畅映射。
using Core.Model; // Where Site class exists
namespace Core.Repository.NHibernate.Mappings
{
public class SiteMapping : ClassMap<Site>
{
public SiteMapping()
{
Table
这是实际模式的简化示例,所以请耐心听我说。我有一个包含id和value列的表foo。还有一个bar表,它有一个FK返回到foo表,这个表有一个extended_value列。我想让Foo的类映射向左加入栏,并尝试使用它的extended_value列(如果存在的话),否则返回到Foo的value。
下面是我需要的SQL等价物:
select coalesce(b.extended_value, f.value) as value
from foo f
left join bar b on (b.id = f.id)
我在NHibernate上使用了Fluent。这是我一直在尝试使用的:
使用fluent nhibernate和自动映射(nhibernate创建我的db架构),如何让nhibernate基于以下类在数据库中创建nvarchar(max)列
public class VirtualPage : BaseEntity
{
public virtual int ParentId { get; set; }
public virtual string PageName { get; set; }
public virtual string Title { get; set; }
public virtual string Body { g
然后,我使用Fluent NHibernate及其自动映射功能来映射以下简化的POCO类:
public class Foo
{
public virtual int Id { get; set; }
public virtual datetime CreatedDateTime { get; set; }
}
默认情况下,CreatedDateTime字段将映射到SQL DateTime。但是,如果我执行一个测试来检查实体是否被正确创建,那么它将失败。这是因为SQL字段的精度不会一直保持到DateTime数据库。我理解这背后的原因是MS SQL Server Date
我有一个类,它使用NHibernate映射到一个表。问题是,只有部分属性映射到表中的列。这很好,因为我们唯一用于显示的列都是映射的,但是我想知道是否有任何方法来查询表中没有映射到类中属性的其他列。
例如,我们有一个具有以下列的表:
Customer
-----------
CustomerId
Name
DateCreated
我们有一个物体
public class Customer
{
public virtual int CustomerId {get;set;}
public virtual string name {get;set;}
}
name和customerI
我得到错误脱水属性值时,提交在更新。我已经搜索过了,它看起来类似于,唯一的区别是在引用的问题中,NHibernate抱怨无法解决属性
值IssuingOffice的值已经存在于数据库中,因此它不能成为引用未保存的记录的问题。
下面是详细的错误。
Test 'Tests.Services.StickerInvoiceServiceTests.update_sticker_info_succeeds' failed:
NHibernate.PropertyValueException : Error dehydrating property value for
Model.Stic
我有以下模型
public class Customer
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Invoice> Invoices { get; set; }
public virtual XDocument AlotOfData { get; set; }
}
public class Invoice
{
public virtual long CustomerId { ge
我正在学习使用NHibernate验证器,它是Fluent API (Loquacious)。
我注意到,我不能设置整数属性或可以为空的int属性(int?)不可为空的。有何不可呢?
在数据库中,整型列可以具有空值。更糟糕的是,当我使用SchemaExport生成DDL时,integer列将不会获得这种非空值(除非我在Nhibernate映射中表示它)。
我刚开始使用Linq to NHibernate,在一个非常简单的查询中遇到了麻烦。我有一个定义为varchar的数据库列。在linq查询中,我需要将该值与日期时间值进行比较(存储在varchar列中的所有值都是有效日期)。我试着这样做:
var list = (from o in session.Linq<ObjectName>() where Convert.ToDateTime(o.ColumnName) >= startDate select o).ToList();
在使用Convert.ToDateTime时,我得到了这样的异常:
不能在没有投影的条件上使用子查询
我刚刚遇到了一个与NHibernate相关的问题,我忘记映射类的一个属性。
一个非常简单的例子:
public class MyClass
{
public virtual int ID { get; set; }
public virtual string SomeText { get; set; }
public virtual int SomeNumber { get; set; }
}
...and映射文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-m
我想测试我的实体是否可以持久化到数据库中,所以我看到了本文:
初始化会话工厂的代码与本文中的相同:
public class NHibernateInMemoryTestFixtureBase
{
protected static ISessionFactory sessionFactory;
protected static Configuration configuration;
public static void InitalizeSessionFactory(params Assembly[] assemblies)
{
if (s
我已经用本地SQLite数据库在C#中设置了一个Nhibernate项目,如果在保存我的Nhibernate对象时遇到问题,它会告诉我我的主键不是唯一的,这是对的,但我在我的nhibernate映射中添加了一个生成器。
下面是类:
public class Article
{
public virtual int ArticleId { get; set; }
public virtual string Name { get; set; }
public virtual double Price { get; set
我有以下数据库表:
CREATE TABLE A
(
[Id] [INT] IDENTITY (1,1) NOT NULL CONSTRAINT A_P_KEY PRIMARY KEY,
[X] [INT]
)
以下是实体类:
public class A
{
public virtual int Id { get; set; }
public virtual int X { get; set; }
}
以下是映射:
internal class AConfiguration : ClassMapping<A>
{
public AConfigurat
背景
使用NHibernate的ASP.NET MVC2项目中的FluentNVC2 1.1 (具有使用LINQ to NHibernate的存储库实现)。
我有一个映射类(Station)和另一个映射类(Report)的集合。我还希望Station有一个方便的属性(MostRecentReport),它返回带有最近时间戳的Station的Report。
部分架构
Stations
--------
Id
Reports
---------
Id
StationId
Timestamp
部分代码
public abstract class Entity
{
public virtua
使用LINQ to Sql,您可以为给定的fetch指定不希望加载特定的子元素(急切或延迟)。这在NHibernate中是可能的吗?有时我只需要根对象和/或对象图的一部分,我希望能够指定它,而不是编写DTO并进行映射,以避免这样一个事实:如果我试图序列化我的对象,NHibernate会觉得必须加载所有内容。
谢谢!