Dapper.SimpleCRUD 삽입 / 업데이트 / 가져 오기가 실패합니다. "엔터티에 적어도 하나의 [Key] 속성이 있어야합니다"

c# dapper dapper-extensions sql

문제

나는 Dapper에있는 새로운 아기입니다. Dapper 및 Dapper.SimpleCRUD lib와 CRUD 작업을 통합하려고합니다. 샘플 코드는 다음과 같습니다.
내 데이터 모델은 다음과 같습니다.

Class Product
{
  public string prodId {get;set;}
  public string prodName {get;set;}
  public string Location {get;set;}
}

Dapper 구현 - 삽입

public void Insert(Product item)
{
    using(var con = GetConnection())
    {
      con.Insert(item);
    }
}

Db의 ProdId는 식별 열이므로 실패합니다. ProdId가 DB의 Identity 열임을 나타내는 방법은 무엇입니까?

Dapper 구현 - 가져 오기

public IEnumerable<Product> GetAll()
{
        IEnumerable<Product> item = null;
        using (var con = GetConnection())
        {
            item = con.GetList<Product>();
        }
        return item;
}

그것은 예외를 준다 :

"엔티티에는 적어도 하나의 [Key] 속성이 있어야합니다!"

수락 된 답변

이는 Insert CRUD 확장 메소드를 구현 한 Dapper Extension을 사용하고 있기 때문에 발생합니다. 이상적으로 이것은 간단한 것을 사용하여 달성 할 수 있습니다.

con.Execute 확장자에 의해 자동으로 삽입 쿼리를 개체를 전달하고 만들부터 단정 한에서,하지만, 당신이 주어진 제품 엔터티의 기본 키 인 이해하는 데 도움이 필요, 다음 수정 도움이된다 :

[Key]
public string prodId {get;set;}

여기서 Key 속성은 Dapper Extension 또는 Component Model 에서 구현되어야합니다.

또는 prodId 이름을 Id 변경하면 자동으로 키가됩니다. 또한 엔티티에 대한 별도의 매퍼를 만들 수있는 다음 링크를 확인하여 키를 정의합니다.


인기 답변

SQL Server 2016에 연결하면 테이블의 ID 열에 기본 키를 첨부하는 것을 잊었을 때 Dapper.Contrib 및 Dapper.SimpleCRUD에서이 오류가 발생했습니다.

기본 키가 테이블에 추가되었으므로 프로젝트를 다시 작성하고 게시하여 캐시를 지우고 [Key] 및 [ExplicitKey] (DapperContrib의 후자)를 모두 사용하면 좋습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.