2016-08-04 2 views
1

У меня есть два объекта под названием User и Student, как показано ниже:Как создать строку отношения PK/FK и uniqueidentifier?

public class User 
{ 
    [Key] 
    public string Id { get; set; } 

    //omitted for brevity 
} 


public class Student 
{ 
    [Key] 
    public int Id { get; set; } 

    //Foreign key for User 
    public Guid UserId { get; set; } 

    //omitted for brevity 
} 

В проекте MVC, я использую EF Code First и хочу создать отношения между этими объектами. Какой тип данных я должен использовать в качестве поля UserId в пользовательской сущности? string или Guid (есть значения Guid в поле Id таблицы User)? Не могли бы вы привести пример?

+0

** Есть значения Guid в поле Id таблицы пользователей ** У вас уже есть таблица? Почему вы спрашиваете, какой тип он должен быть тогда? Тип вашей собственности должен соответствовать (в таблице PK & FK) – Shyju

+0

@Shyju Я имел в виду таблицу ASP.NET Identity User :) Итак, мне нужно создать отношения с ней, но не знаю, какой тип данных я должен использовать в своей пользовательской таблице? –

+0

@Shyju Любой ответ пожалуйста? –

ответ

0

Вы должны действительно использовать int для поля ID для целей индекса. Использование Guid или string будет значительно медленнее, чем int.

Но ваш вопрос, тип UserId должен быть того же типа, как User.Id

+0

Да, я знаю, но мне нужно создать отношения с таблицами Identity ASP.NET, и он использует тип данных типа (GUID) как поле Id. С другой стороны, изменение их на Int действительно является большой проблемой и не выполняется должным образом. Итак, пожалуйста, какой-нибудь пример? –

+0

@binary вы можете изменить столбец идентификатора таблицы Identity, чтобы использовать int вместо строки. Но это непросто, когда вы находитесь на стадии производства. Итак, в вашем случае вы застряли в строке, поскольку тип данных - это varchar вместо Guid в базе данных. – Steve

+0

Я пробовал много разных методов на многих страницах, но ни один из них не работает должным образом. Таким образом, единственный вариант - создать подходящие отношения в моих пользовательских таблицах и таблице пользователей .NET. Но если я использую строку, можно ли создать значения Guid для новых записей в таблице Student? –

0

Вы можете пойти на GUID в User Entity.

public class User 
{ 
    [Key] 
    public Guid Id { get; set; } 
} 

public class Student 
{ 
    [Key] 
    public int Id { get; set; } 

    //Foreign key for User 
    public Guid UserId { get; set; } 

    public virtual User User { get; set; } 

} 
+0

Пользователь является таблицей по умолчанию для ASP.NET Identity и я не хочу изменять пользовательский объект. Итак, в таком случае я должен использовать Guid или string для поля UserId в Student? Если я должен указать, как я могу создать значения GUID для новых записей в Student? Не могли бы вы изменить свой ответ? –

+0

Любой ответ, пожалуйста? –

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