Недавно я перешел с Ruby on Rails
на C#
используя .NET
.
В Ruby вы можете связать новую модель с использованием new CurrentUser.newmodel
до тех пор, как newmodel
имеет UserId
и эта модель будет связана с этим пользователем. Также вы можете подтянуть эту модель с помощью CurrentUser.newmodel
и запросить любые атрибуты из той модели, которую вы хотите. Для этого вам нужны отношения один к одному с ActiveRecord. Например, в Ruby вы использовали бы
class newmodel
belongs_to :currentuser
//other code here that doesn't matter within this question
end
Есть ли способ заставить мои модели сделать что-то подобное с Entity?
Я все еще не могу комментировать, но Panagiotis кажется правильным - вы, вероятно, задаете неправильный вопрос. Во-первых, я стараюсь, чтобы вы назначили конкретный профиль пользователя для приложения. если это так - см. http://www.codeproject.com/Articles/281602/ASP-NET-Profile-Provider и http://msdn.microsoft.com/en-us/library/0580x1f5%28v=vs.100 % 29.aspx
Но если вы ищете постоянство отношений (например, один-к-одному, один-ко-многим и т.д.), Вы должны быть более конкретными в отношении уровня данных, который вы используете.
РЕДАКТИРОВАТЬ:
В отличие от динамических языков, таких как Ruby и Python, С# очень "строгий" с точки зрения моделирования объектов, поэтому, если вы хотите использовать синтаксис, например User.Whatever
, то, Whatever
должно быть объявлено классом. Единственный способ реализовать гибкие атрибуты объекта - использовать какой-то словарь или список.
Пример внедрения может быть:
public class User{
public User(){
AdditionalAttributes=new Dictionary<string, object>();
}
public Dictionary<string, object> AdditionalAttributes{get; set;}
}
а потом
var user=new User();
user["belongs_to"]=currentUser
но это может быть сложным для хранения такого отношения.
Да, если вы определили свои модели в Entity Framework, вы можете сопоставить объекты в отношениях, как в Rails. Синтаксис почти одинаковый, для фактической части назначения:
Person bob = new Person();
Job j = new Job();
bob.Job = j;
При сохранении идентификатор j будет сохранен в таблице Person, чтобы сохранить связь.