0

У меня есть модель этой модели:Щеголеватый колонка отображение со свойством в модели, имеющей другое имя и тип

public class Member 
    { 
     #region public property 

     public int Id { get; set; } 
     public string LastName { get; set; } 
     public string FirstName { get; set; } 
     public AccountState AccountState { get; set; } 
     public GodFatherType GodFatherType { get; set; } 
} 

AccountState и GodFatherType ли оба 2 eumerates:

public enum AccountState 
{ 
    NotActivated = 0, 
    Activated = 1, 
    Desactived = 2, 

} 

public enum GodFatherType 
    { 
     Undefined=0, 
     unknown = 1, 
     Correct = 2, 
    } 

в базе данных У меня есть Id, LastName, FistName, TinyInt AccountstateId et smallint GodFatherTypeid, я не хочу менять свою хранимую процедуру, как я могу сопоставить My class Member с базой данных ??

На самом деле я получаю только атрибуты только Id, LastName, FistName, когда я исполняю свою хранимую процедуру с этим кодом:

public sealed class DbContext : IDbContext 
{ 
    private bool disposed; 
    private SqlConnection connection; 

    public DbContext(string connectionString) 
    { 
     connection = new SqlConnection(connectionString); 
    } 

    public IDbConnection Connection 
    { 
     get 
     { 
      if (disposed) throw new ObjectDisposedException(GetType().Name); 

      return connection; 
     } 
    } 

    public IDbTransaction CreateOpenedTransaction() 
    { 
     if (connection.State != ConnectionState.Open) 
      Connection.Open(); 
     return Connection.BeginTransaction(); 
    } 

    public IEnumerable<T> ExecuteProcedure<T>(string procedure, dynamic param = null, IDbTransaction transaction = null) 
    { 
     if (connection.State == ConnectionState.Closed) 
     { 
      connection.Open(); 
     } 

     return Dapper.SqlMapper.Query<T>(connection, procedure, param, transaction, 
      commandType: CommandType.StoredProcedure); 
    } 

    public int ExecuteProcedure(string procedure, dynamic param = null, IDbTransaction transaction = null) 
    { 
     if (connection.State == ConnectionState.Closed) 
     { 
      connection.Open(); 
     } 

     return Dapper.SqlMapper.Execute(connection, procedure, param, transaction, 
      commandType: CommandType.StoredProcedure); 
    } 

    public void Dispose() 
    { 
     Debug.WriteLine("** Disposing DbContext"); 

     if (disposed) return; 

     if (connection != null) 
     { 
      connection.Dispose(); 
      connection = null; 
     } 

     disposed = true; 
    } 
} 
+0

Какие столбцы возвращают sproc? Пока что * выглядит * как прямое совпадение - это так же просто, как исправление перечислений? то есть 'public enum AccountState: byte {NotActivated = ...}' и 'public enum GodFatherType: short {...}'? это единственные несоответствия, которые я вижу ... –

ответ

1

Опция простой, чтобы держать их 1: 1, т.е.

public AccountState AccountStateId { get; set; } 
public GodFatherType GodFatherTypeId { get; set; } 

где

public enum AccountState : byte {...} 
public enum GodFatherType : short {...} 

Если переименование Проперти эс не представляется возможным, возможно, добавить регулировочные свойства:

private byte AccountStateId { 
    get { return (byte)(int)AccountState; } 
    set { return AccountState = (AccountState)(int)value; } 
} 

Это является также можно переименовать пользователей на карте, но это сложнее.

+0

Я в порядке для первого решения Спасибо :) – user1428798