Я только начал использовать Linq, и в данный момент у меня есть готовая база данных и я создал несколько классов сущностей в C #.
Теперь мой объект под названием «Персона» имеет отношение «многие ко многим» с «Профессией». Но всякий раз, когда я пытаюсь вызвать следующее утверждение, оно не будет работать:
Context ctx = new Context(ConfigurationManager.ConnectionStrings["myContext"].ConnectionString);
var Julian = (from j in ctx.persons
where j.Name == "Julian"
select j).Single();
Profession proftest = new Profession() { Name = "Programmer", Accepted = true };
Julian.Professesions.Add(proftest);
ctx.SubmitChanges();
Теперь я покажу вам классы, с которыми я работаю:
Человек получил следующие несколько вещей (остальная часть переменной класса работает, поэтому я покажу вам плохую часть):
// Data (for mapping)
private EntitySet<PersonProfession> personProfession;
public Person()
{
personProfession = new EntitySet<PersonProfession>();
}
[Association(Name = "FK_j_Person_Profession_Person", Storage = "personProfession", OtherKey = "personId", ThisKey = "Id")]
internal ICollection<PersonProfession> PersonProfessions
{
get { return personProfession; }
set { personProfession.Assign(value); }
}
public ICollection<Profession> Professions
{
get { return (from prof in PersonProfessions where prof.Profession.Accepted==true select prof.Profession).ToList(); }
}
Теперь я могу успешно вызвать следующий метод в классе "Person":
public void AddProfession(Profession profession, Person person)
{
PersonProfession pp = new PersonProfession();
pp.Person = person;
pp.Profession = profession;
personProfession.Add(pp);
}
Но, конечно, это не то, что я хочу.
Соотношение данных выглядит следующим образом:
Персона -> j_Person_Profession <- Профессия </p>
У меня также есть та же проблема (что .Add () не работает) с другим отношением между Person и Alias (это таблица с только int для PersonId и String для псевдонима.
Последний маленький вопрос:
Мой класс «Профессия» также получил ту же связь с «Человеком», поэтому, когда я спрашиваю контекст для человека, я могу посмотреть на его / ее профессию, и в рамках этой профессии больше людей с такой же профессией. Разве это не очень медленно с большими базами данных? Может мне удалить обратную ссылку?