일반 저장소 패턴을 사용할 때 최근에 추가 된 엔티티의 ID를 얻는 방법을 알아 내려고합니다. 좋은 예가 될 것입니다. 여기, 당신이 실행하는 동안, 당신은 ID
(당신이 그것을 호출이 무엇이든) 속성이 채워집니다를 볼 것이다, 당신의 코드를 단계별 경우 여기일반 저장소 패턴을 사용할 때 엔티티 ID를 얻는 방법 C#
-1
A
답변
0
존재 doen'st
public class Repository<T> : IRepository<T> where T : class {
protected DbContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public Repository(DbContext dbContext)
{
if (dbContext == null)
throw new ArgumentNullException("dbContext");
DbContext = dbContext;
DbSet = DbContext.Set<T>();
}
public virtual void Add(T entity)
{
DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
if (dbEntityEntry.State == EntityState.Detached)
{
DbSet.Attach(entity);
dbEntityEntry.State = EntityState.Added;
}
else
{
DbSet.Add(entity);
}
}
}
entity.Id을 저장소 (repository) 추가 후.
문제는 엔티티 프레임 워크가 아니라 일반 저장소가 있습니다. 방금 추가 한 int ID
(다시 가정)을 반환 할 방법이 필요합니다.
public interface IEntity
{
public int ID { get; set; }
}
을하고 모든 모델은 그것에서 상속합니다. 그런 다음 저장 한 후 entity.ID
을 반환 할 수 있습니다
public class Repository<T> : IRepository<T> where T : IEnitity
: 그런 다음에 당신의 유형의 제약 조건을 변경합니다.
+0
이 경로를 사용하여 인터페이스를 시작한 후 단계별로 dbcreator가 ID를 기본 키로 사용했지만 다른 일부 필드는 사용하지 않는다는 것을 깨달았습니다. Commit 후에 다른 필드가 올바른 기본 키로 채워졌습니다. –
엔티티를 추가하면 해당 'Id' 속성이 채워집니다. 몇 가지 코드를 제공해야합니다. – Jonesopolis
일반 리포지토리 클래스 –