Dapper Extension Get & Update는 오류를 반환합니다.

dapper dapper-extensions

문제

나는 Dapper Extension & MS Access로 게임을 시도하고 어느 정도 성공했다. 내 코드는 다음과 같습니다. 모든 기능은 Get & Update를 제외하고 제대로 작동합니다 (Insert / Count / GetList / Delete). 아래 코드를 요약했습니다. 만약 누군가가 원한다면 여기에 모든 코드를 붙여 넣을 수 있습니다.

My Product 클래스

public class Products
{
    public string ProductNumber { get; set; }
    public string Description { get; set; }
}

그리고 내 주요 수업. 나는 제품을 얻고 그것을 아래와 같이 바꾸는 것을 시도했다. con.Get<Products> 함수는 "시퀀스에 둘 이상의 요소가 포함 된" 메시지를 포함 하는 예외를 반환하고 con.Update<Products>"적어도 하나 이상의 키 열을 정의해야합니다 . " 라는 예외를 반환합니다.

        using (var con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"))
        {

            string ProductNumber = "12";
            var product4 = con.Get<Products>(ProductNumber);
            product4.ProductNumber = "Baz";
            con.Update<Products>(product4);   

            Console.ReadLine();
        }

con.Get<Products> 가 실패 con.GetList<Products>(predicate) 는 완벽하게 작동합니다. 내가 설정을 위해이 링크를 따라 갔다.

인기 답변

DapperExtensions가 클래스에서 ID라는 핵심 속성을 유추 할 수없는 경우 클래스 매핑 프로그램을 통해 명시 적으로 지정해야합니다. ProductNumber가 데이터베이스의 기본 키라고 가정 할 때, 다음 예의 클래스 맵퍼는 ProductNumber를 DapperExtensions의 기본 키로 설정해야합니다.

using Dapper;   
using DapperExtensions;
using DapperExtensions.Mapper;
public class ProductsMapper : ClassMapper<Products>
{
    public ProductsMapper()
    {
        Map(x => x.ProductNumber).Key(KeyType.Assigned);
        AutoMap();
    }
}

이 클래스는 나머지 코드와 동일한 어셈블리 내에있을 수 있습니다. Dapper Extensions가 자동으로 선택합니다. 별도의 어셈블리에 클래스와 Dapper 코드가있는 경우 다음 줄을 사용하여 해당 매퍼를 가리킬 수 있습니다.

DapperExtensions.DapperExtensions.SetMappingAssemblies({ typeof(ProductsMapper).Assembly })


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow