MVC3中EF关系的问题

发布于 2025-01-04 09:03:50 字数 1670 浏览 3 评论 0原文

我得到以下代码:

public class Trip
{
    public int TripId { get; set; }

    public int DriverId { get; set; }

    public string StartingPoint { get; set; }

    public string Destination { get; set; }

    public DateTime TimeDepart { get; set; }

    public int SeatAvailable { get; set; }

    public virtual Carpooler Carpooler { get; set; }

    public virtual ICollection<Passenger> Passengers { get; set; }
}

public class Driver
{
    public int DriverId { get; set; }

    public int TripId { get; set; }

    public virtual Trip Trip { get; set; }
}

public class Passenger
{
    public int PassengerId { get; set; }

    public int TripId { get; set; }

    public virtual Trip Trip { get; set; }
}

模型构建器:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        //one-to-one between Trip and Carpooler
        modelBuilder.Entity<Trip>()
            .HasRequired(x => x.Carpooler)
            .WithRequiredDependent();
        modelBuilder.Entity<Carpooler>()
            .HasRequired(x => x.Trip)
            .WithRequiredPrincipal();
        base.OnModelCreating(modelBuilder);

        //zero or one-to-many between Trip and Passenger
        modelBuilder.Entity<Trip>()
        .HasOptional(x => x.Passengers);

        modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
    }

初始化器:

Database.SetInitializer<LiveGreenContext>(new CarpoolTripInitializer());

我收到以下错误: 关系“Trip_Driver”中的角色“Trip_Driver_Target”中的多重性无效。由于从属角色属性不是关键属性,因此从属角色的重数上限必须为*。

有什么解决办法吗?谢谢!

I got the following codes:

public class Trip
{
    public int TripId { get; set; }

    public int DriverId { get; set; }

    public string StartingPoint { get; set; }

    public string Destination { get; set; }

    public DateTime TimeDepart { get; set; }

    public int SeatAvailable { get; set; }

    public virtual Carpooler Carpooler { get; set; }

    public virtual ICollection<Passenger> Passengers { get; set; }
}

public class Driver
{
    public int DriverId { get; set; }

    public int TripId { get; set; }

    public virtual Trip Trip { get; set; }
}

public class Passenger
{
    public int PassengerId { get; set; }

    public int TripId { get; set; }

    public virtual Trip Trip { get; set; }
}

A model builder:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        //one-to-one between Trip and Carpooler
        modelBuilder.Entity<Trip>()
            .HasRequired(x => x.Carpooler)
            .WithRequiredDependent();
        modelBuilder.Entity<Carpooler>()
            .HasRequired(x => x.Trip)
            .WithRequiredPrincipal();
        base.OnModelCreating(modelBuilder);

        //zero or one-to-many between Trip and Passenger
        modelBuilder.Entity<Trip>()
        .HasOptional(x => x.Passengers);

        modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
    }

A initializer:

Database.SetInitializer<LiveGreenContext>(new CarpoolTripInitializer());

And i get the following error:
Multiplicity is not valid in Role 'Trip_Driver_Target' in relationship 'Trip_Driver'. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be *.

Any solution for the problem? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与酒说心事 2025-01-11 09:03:50

配置TripDriver之间的关系。 Trip 中有一个未配置的 DriverId 属性。如果您打算将其用作导航属性,您也需要对其进行配置。

OnModelCreating 方法中的某些配置不完整,现已更正。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Driver>()
        .HasRequired(x => x.Trip)
        .WithMany()
        .HasForeignKey(x => x.TripId);

    //one-to-one between Trip and Carpooler
    modelBuilder.Entity<Trip>()
        .HasRequired(x => x.Carpooler)
        .WithRequiredDependent();

    modelBuilder.Entity<Carpooler>()
        .HasRequired(x => x.Trip)
        .WithRequiredPrincipal();

    //zero or one-to-many between Trip and Passenger
    modelBuilder.Entity<Trip>()
    .HasMany(x => x.Passengers)
    .WithRequired(x => x.Trip)
    .HasForeignKey(x => x.TripId);

    base.OnModelCreating(modelBuilder);

    modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
}

Configure the relationship between Trip and Driver. There is a DriverId property in Trip which is not configured. If you intend to use this as a navigational property you need to configure that too.

Some of the configuration were incomplete in your OnModelCreating method and are corrected.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Driver>()
        .HasRequired(x => x.Trip)
        .WithMany()
        .HasForeignKey(x => x.TripId);

    //one-to-one between Trip and Carpooler
    modelBuilder.Entity<Trip>()
        .HasRequired(x => x.Carpooler)
        .WithRequiredDependent();

    modelBuilder.Entity<Carpooler>()
        .HasRequired(x => x.Trip)
        .WithRequiredPrincipal();

    //zero or one-to-many between Trip and Passenger
    modelBuilder.Entity<Trip>()
    .HasMany(x => x.Passengers)
    .WithRequired(x => x.Trip)
    .HasForeignKey(x => x.TripId);

    base.OnModelCreating(modelBuilder);

    modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文