2013-03-10 1 views
0

У меня есть эти классы на EF из базы данныхLINQ на EF генерироваться класс

public partial class STUDENT 
{ 
    public short STUDENTID { get; set; } 
    public string NAME { get; set; } 
    public string FAMILY { get; set; } 

    public virtual CLASS CLASS { get; set; } 
} 

public partial class CLASS 
{ 
    public CLASS() 
    { 
     this.STUDENTs = new HashSet<STUDENT>(); 
    } 

    public short CLASSID { get; set; } 
    public string CLASSNAME { get; set; } 

    public virtual ICollection<STUDENT> STUDENTs { get; set; } 
} 

public partial class VALIDNAMES 
{ 
    public string VALIDNAME { get; set; } 
} 

Я хочу, чтобы заставить пользователя не может вставлять какие-либо данные о student.name, что это название не на VALIDNAMES recordes. Я хочу сделать это в слое модели, потому что я хочу использовать свойство name на многих страницах, поэтому хочу иметь эту проверку на этом уровне.

В других отношениях я хочу использовать LINQ на уровне модели или возможно изменить набор и получить для классов, сгенерированных EF?

+0

Вы можете сделать сеттеры частным. –

ответ

0

Вы можете попробовать установить ограничение внешнего ключа в столбце NAME в таблице STUDENT, которые ссылаются на столбец VALIDNAME таблицы VALIDNAMES.

Предполагая, что вы используете SQL Server, необходимо выполнить что-то вроде этого против вашей базы данных:.

ALTER TABLE [dbo].[STUDENT] WITH CHECK ADD CONSTRAINT [FK_student_valid_name] FOREIGN KEY([NAME]) 
REFERENCES [dbo].[VALIDNAMES] ([VALIDNAME]) 
GO 

Вы также, возможно, потребуется указать [СТУДЕНТА] [NAME] столбец как NOT NULL (так что ваш пользователь не могут вводить имена NULL) и установите [VALIDNAMES]. [VALIDNAME] как уникальный индекс/первичный ключ.

Таким образом, проверка выполняется с помощью СУБД вместо кода приложения.

+0

ОК, спасибо, но мой вопрос является общедоступным для использования linq в EF сгенерированном классе для проверки. например, я имею функцию в базе данных и получаю параметр id и возвращаю логический результат, я хочу, чтобы только люди могли обновлять записи таблицы учеников, чтобы эта функция возвращала true. – SYSMAN

+0

В вашем первоначальном вопросе ничего не говорится о вызове функции db, это то, чего вы действительно пытаетесь достичь? – andri

+0

Я хочу использовать LINQ в разделе набора свойств для получения значения по специальному условию и только разрешить значение, установленное для этого значения – SYSMAN