tuc*_*caz 7 nhibernate fluent-nhibernate linq-to-nhibernate
我使用Nhibernate 2.1.2.4000 GA与Nhibernate.Linq 1.0和最新版本的FluentNhibernate从github上的master下载.
我正在做一些测试,每当我尝试删除由linq查询检索的实体时,我收到此错误:
没有持久性:NHibernate.Linq.Query`1 [[Employees.Core.Entities.Employee,Employees.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]
所有其他操作(插入,更新和选择)看起来很好;
我的实体类:
public class Employee
{
public Employee()
{
}
public virtual Int32 Id { get; private set; }
public virtual String Name { get; set; }
public virtual String SayHello()
{
return String.Format("'Hello World!', said {0}.", Name);
}
}
Run Code Online (Sandbox Code Playgroud)
映射类:
public class EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
Id(x => x.Id);
Map(x => x.Name)
.Not.Nullable()
.Length(50);
}
}
Run Code Online (Sandbox Code Playgroud)
组态:
Assembly mappingsAssemly = Assembly.GetExecutingAssembly();
return Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2008
.ConnectionString(connectionString)
.ProxyFactoryFactory(typeof(ProxyFactoryFactory))
.ShowSql())
.Mappings( m => m.FluentMappings.AddFromAssembly(mappingsAssemly))
.BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
并且代码不起作用:
public void RemoveAll()
{
var q = from employee in _session.Linq<Employee>()
select employee;
foreach (var employee in q.ToList())
{
_session.Delete(q);
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我们都错过了!
对不起,伙计们,谢谢你的帮助,但我只是想通了.
如果你注意RemoveAll()方法,你会看到我试图删除不是实体的"q"对象,而是IQueriable而不是传递"employee".这是缺乏关注.
正确的代码是:
public void RemoveAll()
{
var q = from employee in _session.Linq()
select employee;
var p = q.ToList();
foreach (var employee in p)
{
_session.Delete(employee);
}
}
| 归档时间: |
|
| 查看次数: |
3108 次 |
| 最近记录: |