İsa KAYA Ответов: 2

Roomid пользователей класса(ФК) = класс идентификационный номер(кол-во) один на один в efcodefirst


public class User
    {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Gender { get; set; }
        public string Telephone { get; set; }
        public string Mail { get; set; }
        public string TcNo { get; set; }

        public virtual Room RoomID { get; set; }
    }

public class UserMap : EntityTypeConfiguration<user>
    {
        public UserMap()
        {
            HasKey(x => x.ID);
            Property(x => x.ID)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            HasRequired(x => x.RoomID)
                .WithOptional(l => l.UserRoom)
                .Map(x => x.MapKey("RoomID"));


        }
    }


-----------------Room--------------------------------
public class Room
    {
        public int ID { get; set; }
        public int? RoomNo { get; set; }
        public int NightFee { get; set; }
        public RoomType RoomType { get; set; }
        public RoomStatus RoomStatus { get; set; }
        public string Description { get; set; }
        public bool? Cleaning { get; set; }
        public bool? Available { get; set; }
        public DateTime CheckInDate { get; set; }
        public DateTime CheckOutDate { get; set; }


        public virtual User UserRoom { get; set; }
    }


public class RoomMap : EntityTypeConfiguration<room>
    {
        public RoomMap()
        {
            HasKey(x => x.ID);
            Property(x => x.ID)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        }
    }


Что я уже пробовал:

addroom.UserRoom.RoomID = adduser.RoomID;
adduser.RoomID.UserRoom = addroom.UserRoom;
adduser.RoomID = addroom.UserRoom.RoomID;

2 Ответов

Рейтинг:
2

Gerry Schmitz

Конвенции: название класса + "идентификатор".

Тогда EF может делать предположения о первичном ключе "идентичности".

Воспользуйся:

[Ключ]
public int UserId {get;set;}


İsa KAYA

Спасибо но к сожалению это не так


Идентификатор пользователя класса(ключ)
Class User RoomID(ForeignKey)=идентификатор комнаты класса(ключ)

Пример
Я хочу это сделать;
номер-------таблица пользователей
--------------------ID=03
Идентификатор=05 ========RoomID=05(стол номер идентификатора)

Рейтинг:
1

Dave Kreskowiak

Вы все совершенно неправильно поняли. Вам вообще не нужен класс конфигурации для таких простых отношений.

Я предполагаю, что ваш класс комнат выглядит примерно так:

public class Room
{
    [Key]
    public int RoomId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

Ваш пользовательский класс должен выглядеть следующим образом:
public class User
{
    [Key]
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public string Telephone { get; set; }
    public string Mail { get; set; }
    public string TcNo { get; set; }

    public virtual Room Room { get; set; }
}

Опять же, никакой класс конфигурации не требуется. Номер автоматически будет необязательным.
Вам также на самом деле не нужны ключевые атрибуты, потому что имя идентификатора совпадает с именем класса, добавленным с помощью "Id". Я просто поместил их туда, потому что мне нравится больше "документировать" в своем коде и меньше "условностей".


İsa KAYA

Нет имени в классе номеров

Dave Kreskowiak

И что это значит для меня? Как у комнаты может быть имя?

İsa KAYA

Имя в номере класс нет столбца

Dave Kreskowiak

И опять же, в этом нет никакого смысла.