MS SQL 2008 데이터베이스에 연결하는 MVC5 웹 응용 프로그램을 구축 중이므로 사용자가 거기에 저장된 데이터를 검색하고 변경할 수 있습니다. autofac 튜토리얼과 예제를 살펴 보았지만 그 중 어떤 것도 작동하지 않는 것처럼 보입니다.MVC 5 데이터베이스 데이터를 볼 수없는 NHibernate Autofac
내 autofac 구성이 문제라고 가정합니다. 앱을 실행할 때 내 모델이 null이라고 말하기 때문입니다. 내 생각에 자동 팩 (autofac)이 데이터베이스에 연결되어 있지 않다는 의미입니다.
그래서, 내 global.asax.cs
파일에 나는 다음과 같습니다
protected void Application_Start()
{
#region Autofac
// Register Controllers
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly); //all controllers in assembly at once ?
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterFilterProvider();
// Set the Dependency Resolver
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
// Register Model Binders
builder.RegisterModelBinders(typeof(MvcApplication).Assembly); //all binders in assembly at once ?
builder.RegisterModelBinderProvider();
// Register Modules
builder.RegisterModule<PersistenceModule>();
#endregion
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
내가
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Data Source=DEVSRV\SQLSERVER;Initial Catalog=tipdemo;Persist Security Info=True;User ID=admin;Password=***********</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
<!--<mapping assembly="NHibernateTest"/> -->
</session-factory>
</hibernate-configuration>
</configuration>
그리고 내 PersistenceModule
클래스로 hibernate.cfg.xml
파일이 것은 :
public class PersistenceModule : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
if (builder == null)
throw new ArgumentException("builder", "builder is null");
base.Load(builder);
}
private ISessionFactory ConfigureDB()
{
Configuration cfg = new Configuration().Configure(System.Web.HttpContext.Current.Server.MapPath("~/Config/hibernate.cfg.xml"));
cfg.AddAssembly(typeof(Domain.General.Project).Assembly);
return cfg.BuildSessionFactory();
}
}
또한 PersistenceModule 클래스에 중단 점을 넣어야합니다. – noobieDev
Entity Framework가 성숙하고 완전한 기능을 갖춘 지금 사람들이 새로운 개발을 위해 여전히 nhibernate를 사용하는 이유에 대해 궁금해합니다. – EkoostikMartin
처음에는 EF를 사용해 보았지만 실제로 느리고 응답이 없습니다. DB에는 약 60 개의 테이블과 약 3000 개의 레코드가 있습니다. 그러나 그것도 가능하기 때문에 나는 그것을 잘못 설정했다. 누군가 내가 대신이 방법을 사용해야한다고 말했습니다 ... – noobieDev