我尝试使用Ef 4编写存储库,但是存在问题。我需要在数据库返回id中返回最后添加的行。例如:我添加了Name,SurName但我无法访问上次添加的主ID。我的存储库在下面。我的请求是secand用法。
using System.Data.Objects;
namespace FlyAnt.DAL.FrameWork.ApplicationDomainModel
{
public interface IDomainRepository<Tmodel> : IDisposable where Tmodel : class
{
IQueryable<Tmodel> Fetch();
IEnumerable<Tmodel> GetAll();
IEnumerable<Tmodel> Find(Func<Tmodel, bool> predicate);
Tmodel Single(Func<Tmodel, bool> predicate);
Tmodel First(Func<Tmodel, bool> predicate);
bool Add(Tmodel entity);
bool Delete(Tmodel entity);
bool Attach(Tmodel entity);
}
public class DomainRepository<TModel> : IDomainRepository<TModel> where TModel : class
{
#region IDomainRepository<T> Members
private ObjectContext _context;
private IObjectSet<TModel> _objectSet;
public DomainRepository()
{
}
public DomainRepository(ObjectContext context)
{
_context = context;
_objectSet = _context.CreateObjectSet<TModel>();
}
. . . . .
. . .
. .
.
public bool Delete(Func<TModel, bool> predicate)
{
IEnumerable<TModel> records = from x in _objectSet.Where<TModel>(predicate) select x;
foreach (TModel record in records)
_objectSet.DeleteObject(record);
return SaveChanges()>0;
}
public bool Add(TModel entity)
{
if (entity == null)
throw new ArgumentNullException("entity");
_objectSet.AddObject(entity);
return SaveChanges()>0;
}
...............
..........
......// do someting
SECAND USAGE:如何返回上次添加或上次删除的ID?我尝试在下面做:(
public bool Delete(Func<TModel, bool> predicate)
{
IEnumerable<TModel> records = from x in _objectSet.Where<TModel>(predicate) select x;
foreach (TModel record in records)
_objectSet.DeleteObject(record);
return _objectset.LASTDELETEDPrimaryKEY;
}
public bool Add(TModel entity)
{
if (entity == null)
throw new ArgumentNullException("entity");
_objectSet.AddObject(entity);
return _objectset.LASTADDEDPrimaryKEY;
}
最诚挚的问候......
答案 0 :(得分:0)
很快就会SaveChanges()
所有人都可以使用。
public int Add(TModel entity)
{
if (entity == null)
throw new ArgumentNullException("entity");
_objectSet.AddObject(entity);
SaveChanges();
return entity.mytable_id;
}
如果你想添加,让我们说表的值,一个取决于另一个,让我们假设:
[Table1] [Table2]
t1_id PK ts_id PK
t2_id FK name
name
你很容易:
public void Add(TModel entity1, TModel entity2)
{
if (entity1 == null || entity2 == null)
throw new ArgumentNullException("entity");
entity1.Table2 = entity2;
_objectSet1.AddObject(entity1);
_objectSet2.AddObject(entity2);
SaveChanges();
}