gpt4 book ai didi

ruby-on-rails - ASP.NET MVC3 中的 Rails 有很多等价物

转载 作者:行者123 更新时间:2023-12-03 17:33:22 26 4
gpt4 key购买 nike

在 .NET Entity Framework 中,让(自定义)连接表具有额外属性(ID 除外)和/或通过单独的模型将此连接表与其他连接表关联的最佳方法是什么?在 Ruby on Rails 中,我们可以为连接表创建一个模型,例如:

Item.rb (model)
:has_many => :buyers, :through=>:invoice
...

Buyers.rb (model)
:has_many => :items, :through=>:invoice
...

Invoice.rb (model)
:belongs_to :item
:belongs_to :buyer
....

然后我们可以使用: Item.first.buyers , Buyers.first.itemsBuyer.create(:items=>Item.create(:name=>'random'))等等,就像我们使用没有模型的自动连接表(使用 has_and_belongs_to_many)。

在 Visual Studio 2010 的“添加关联”对话框中,如果我们选择多重性为 *(Many),则没有选择连接表(带模型)的选项。有没有办法手动完成?

最佳答案

是的,你可以得到一些非常接近的东西。我不太确定如何在设计器中设置它,因为我只使用 codefirst。

下面是一个例子:

学生 -> 学生楼层 <- 楼层

public class Student
{
public int Id { get; set; }
// ... properties ...

// Navigation property to your link table
public virtual ICollection<StudentFloor> StudentFloors { get; set; }

// If you wanted to have a property direct to the floors, just add this:
public IEnumerable<Floor> Floors
{
get
{
return StudentFloors.Select(ft => ft.Floor);
}
}
}

链接表:
public class StudentFloor
{
#region Composite Keys

// Be sure to set the column order and key attributes.
// Convention will link them to the navigation properties
// below. The database table will be created with a
// compound key.

[Key, Column(Order = 0)]
public int StudentId { get; set; }

[Key, Column(Order = 1)]
public int FloorId { get; set; }

#endregion

// Here's the custom data stored in the link table

[Required, StringLength(30)]
public string Room { get; set; }

[Required]
public DateTime Checkin { get; set; }

// Navigation properties to the outer tables
[Required]
public virtual Student Student { get; set; }

[Required]
public virtual Floor Floor { get; set; }

}

最后,多对多的另一面:
public class Floor
{
public int Id { get; set; }
// ... Other properties.

public virtual ICollection<StudentFloor> StudentFloors { get; set; }
}

关于ruby-on-rails - ASP.NET MVC3 中的 Rails 有很多等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com