nhibernate - FluentNhibernate 未使用 SQL CE 4.0 创建 Id 列作为身份

标签 nhibernate fluent-nhibernate sql-server-ce integration-testing

我正在尝试创建一些没有外部数据库依赖项的集成测试,因此我使用 SQL CE 4.0 并尝试使用 FluentNhibernate 配置它。

我已经让测试在每次运行时创建数据库文件,然后创建我想要使用的表,但它从未将 Id 列设置为身份规范。当我尝试使用 Nhibernate 插入表时,它提示空标识列。

这是我的映射定义和数据类:

public class AffiliateApplicationRecord
{
    public virtual int Id { get; private set; }
    public virtual string CompanyName { get; set; }
    public virtual string Email { get; set; }
    public virtual string DomainName { get; set; }
    public virtual DateTime DateReceived { get; set; }

    public AffiliateApplicationRecord()
    {
        DateReceived = DateTime.Now;
    }
}

public class AffiliateApplicationRecordMap : ClassMap<AffiliateApplicationRecord>
{
    public AffiliateApplicationRecordMap()
    {
        Table("Partner");
        Id(x => x.Id).GeneratedBy.Identity();
        Map(x => x.CompanyName, "Name");
        Map(x => x.DomainName, "Domain");
        Map(x => x.Email);
        Map(x => x.DateReceived, "TimeStampCreated");
    }
}

这些是配置 session 工厂的方法,我在存储库中调用这些方法来获取 session 工厂来运行查询/插入数据。

编辑:添加方言配置...

private ISessionFactory CreateSessionFactory()
    {

        var config = Fluently.Configure()
            .Database(
                MsSqlCeConfiguration.Standard
                    .Dialect<MsSqlCe40Dialect>()
                    .ConnectionString("Data Source=DatabaseFileName.sdf"))
            .Mappings(m => m.FluentMappings.AddFromAssembly(typeof(AffiliateApplicationRecord).Assembly))
            .ExposeConfiguration(BuildSchema)
            .BuildConfiguration()

        return config.BuildSessionFactory();
    }

    private static void BuildSchema(Configuration config)
    {
        new SchemaExport(config).Create(false, true);
    }

我非常感谢您对此的帮助。我担心 Fluent 不会为我做这件事,或者 SQL CE 不会工作。

预先感谢您的帮助。

最佳答案

使用 SQLCe 工具箱后,我意识到该表是使用标识列正确创建的,并且我看到的问题(AssertionFailure:“空标识符”)实际上是由此处描述的 SQL CE 中的错误引起的...

AssertionFailure: "null identifier" - FluentNH + SQLServerCE

非常感谢

关于nhibernate - FluentNhibernate 未使用 SQL CE 4.0 创建 Id 列作为身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037279/

相关文章:

nhibernate - 使用 Fluent NHibernate 生成表索引

nhibernate - 哪个版本的 fluent nhibernate 与 nhibernate 3.2 兼容

sql - 无需额外安装的数据库

c# - 未找到 SQL Server Compact 3.5 命名空间

asp.net - 使用 jetBrains dotTrace 检测 W3WP CPU 问题

nhibernate - HQL:OR 子句返回更少的记录而不是更多的记录

.net - Fluent Nhibernate AutoMapping——同一张表的 2 个外键?

c# - 数据库或项目文件夹中的图像作为资源

asp.net - 无法加载文件或程序集Antlr3.Runtime.dll

更新到数据库后 NHibernate 查询缓存不起作用