заголовок может быть слишком общим, но у меня есть очень специфический вопрос о том, как проектировать классы C # на основе реляционной базы данных.
Допустим, у нас есть таблица с именем TPerson и таблица с именем TComment, обатаблицы имеют один общий столбец (PERSON_ID, PK в TPerson и FK в TComment).
Допустим, у нас есть веб-приложение, в котором мы отображаем список, показывающий все комментарии от всех, в этом списке мы показываемкомментарий, а также имя и фамилия автора (TPerson), а также дата создания комментария.Я думаю, что нецелесообразно использовать наследование (базовый класс TPerson, производный класс TComment), потому что мне не нужен псевдоним, например, я не хочу перетаскивать другие столбцы со мной, если мне нужны только имя и фамилия(столбец TPerson может иметь много столбцов).
Мне нужен дизайн класса, который может:
- Добавить объекты Person и сохранить в БД
- Добавить объекты Комментарий и сохранить в БД
- Получить список комментариев с именем и фамилией человека
Есть ли способ создать повторно используемый код, только получая или используя части объекта?
Единственный способ сделать это - использовать наследование, и каждый раз, когда я получаю Комментарий, я также создаю объект Person, который идет с ним, но в некоторых частях было бы излишним извлекать всю вещь, когда мне нужны только определенные части.об этом ...
Если бы я создал классы для представления данных, я бы пошел с чем-то вроде этого, Любые идеи?, спасибо за вашу помощь!:
class Person
{
int personId;
string firstName;
string lastName;
string alias;
DateTime creationDate;
public int PersonId
{
get { return personId; }
}
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
public string Alias
{
get { return alias; }
set { alias = value; }
}
public DateTime CreationDate
{
get { return creationDate; }
}
//for adding new person object
public Person(string first_name, string last_name, string alias)
{
}
//internal usage
public Person()
{
}
public void Save()
{
//save new person object in DB or update...
}
public static Person GetPerson(int personId)
{
Person p = null;
//call sproc and load from database...
p = new Person();
p.personId = 10;
p.firstName = "First Name";
p.lastName = "Last Name";
p.alias = "Alias";
return p;
}
}
class Comment
{
int commentId;
int personId;
string comment;
DateTime creationDate;
public int CommentId
{
get { return commentId; }
set { commentId = value; }
}
public int PersonId
{
get { return personId; }
set { personId = value; }
}
public string Comment1
{
get { return comment; }
set { comment = value; }
}
public DateTime CreationDate
{
get { return creationDate; }
set { creationDate = value; }
}
public Comment(int person_id, string comment)
{
}
public Comment()
{
}
public void Save()
{
//save or update to DB
}
public static List<Comment> GetComments()
{
List<Comment> comments = null;
//get data from db and load...
comments = new List<Comment>();
comments.Add(new Comment() {
commentId = 1,
personId = 10,
comment = "this is one comment",
CreationDate = DateTime.Now });
comments.Add(new Comment() {
commentId = 1,
personId = 11,
comment = "this is another comment",
CreationDate = DateTime.Now });
return comments;
}
}