Ef4でリポジトリを書き込もうとしているのですが、問題があります。データベースのリターンIDに最後に追加された行を返す必要があります。例: 名前、SurName を追加しましたが、最後に追加されたプライマリ ID にアクセスできません。私のリポジトリは以下です。私のリクエストは2回目の使用です。
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
2番目の使用方法:最後に追加されたIDまたは最後に削除された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;
}
よろしくお願いします...