小编Kei*_*man的帖子

Fluent NHibernate - 仅在不存在时创建数据库模式

我有一个应用程序,我使用Fluent Nhibernate来创建我的数据库.到目前为止,我每次都在重新创建数据库模式.执行此操作的代码是:

public NhibernateSessionFactory(IPersistenceConfigurer config)
{
    _sessionFactory = Fluently.Configure().
        Database(config).
        Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>()).
        ExposeConfiguration(BuildSchema).
        BuildSessionFactory();
}

private static void BuildSchema(Configuration config)
{
    // if (DbExists(config))
    //    return; 

    new SchemaExport(config).Create(false, true);
}
Run Code Online (Sandbox Code Playgroud)

注意" if (DbExists(config))".这就是我想做的.我只想在它实际上不存在的情况下创建模式.在下一步 - 如果它不是最新的,我想更新它.

我该如何实现这一目标?我期待一个config.DatabaseExists(),但我看不到这样的事情.我看到了hacky解决方案的一些可能性,但是处理这个问题的典型推荐方法是什么?

.net database nhibernate fluent-nhibernate c#-4.0

36
推荐指数
2
解决办法
2万
查看次数

LinqToSql声明并实例化DataContext的最佳实践?

在我的扩展LinqToSql类中设置DataContext以便于访问的最佳实践是什么?

例如,我的dbml中有一个"User"实体,我想向这个类添加方法,如下所示:

Partial Public Class User

    Public Function GetUser(ByVal UserID as Integer) as User
         'Do Work
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

为了访问我的DataContext,我必须在方法中声明它,如下所示:

Partial Public Class User

    Public Function GetUser(ByVal UserID as Integer) as User
         Dim dc as New MyDataContext()
         Return (From u in dc.Users Where u.ID = UserID).Single()
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

我不想为每一种方法都这样做.通常(如果我没有扩展LinqToSql dbml类)我可以这样做:

Partial Public Class User
    Private dc as MyDataContext

    Public Sub New()
         dc = new MyDataContext()
    End Sub

    Public Function GetUser(ByVal UserID as Integer) as User
         Return (From …
Run Code Online (Sandbox Code Playgroud)

.net vb.net datacontext linq-to-sql

15
推荐指数
2
解决办法
9698
查看次数