2014-12-09 7 views
0

Я использую Simple.Data, и у меня есть вопрос.Simple.Data - Сопряжение первичного ключа

Я следующие классы:

public abstract class User 
{ 
    public int Id { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 
    public string Salt { get; set; } 
} 

public class Customer : User 
{ 
    public string Email { get; set; } 
} 

public class Admin : User 
{ 
    public string Name { get; set; } 
    public bool IsActive{ get; set; } 
} 

И класс, который делает действия в базе:

public class Manager 
{ 
    public string ConString { get; set; } 

    public Manager() 
    { 
     ConString = ConfigurationManager.ConnectionStrings["Test"].ConnectionString; 
    } 


    public void CustomerUpdate() 
    {  
     var obj = new Customer() 
     { 
      Id = 1, 
      Username = "teste", 
      Password = "teste", 
      Salt = "", 
      Email = "[email protected]" 
     }; 

     var db = Database.OpenConnection(conString); 
     db.tbCustomer.Update(obj); 
    } 
    public void AdminUpdate() 
    {   
     var obj = new Admin() 
     { 
      Id = 1, 
      Username = "teste", 
      Password = "teste", 
      Salt = "", 
      Name = "teste", 
      IsActive = true    
     }; 

     var db = Database.OpenConnection(conString); 
     db.tbAdmin.Update(obj); 
    } 
} 

Но, у меня есть проблема:

В моей дб, в таблица tbCustomer, Первичный ключ - столбец «CustomerId». И основным ключом таблицы tbAdmin является столбец «AdminId». Поскольку класс User имеет свойство «Id», я не могу выполнять обновления.

Есть ли какой-либо способ, с помощью которого я указываю, когда вы даете обновление в таблице tbCustomer, система принимает свойство «Id» и вводит столбец «CustomerId»? То же самое для tbAdmin. Я хочу, чтобы он взял «Id» и поместил его в «AdminId».

ответ

1

Если вы не можете переименовать свойство в своем классе, лучший вариант, скорее всего, будет использовать Named Parameters в вашем обновлении вместо передачи объекта. Пример для вашего будет

db.tbCustomer.UpdateById(Id: 1, 
         Username: "teste", 
         ...); 
+0

Спасибо Я пытался уйти от этого метода. Мне это удалось. Добавлены свойства для классов Customer и Admin, и они возвращают Id Ex .: public int AdminId {get {return Id; }} –

Смежные вопросы