Когда вы добавляете новый объект в базу данных, его идентификатор будет автоматически заполняться Entity Framework. Вы можете использовать его.
using (var context = new MyDbContext())
{
var product = new Product();
product.Name = "My product";
context.Products.Add(product);
context.SubmitChanges();
var productId = product.ID; // here you can get ID of added product
}
Кроме того, EF может работать с отношениями «многие ко многим», и вам не нужно создавать дополнительный класс для самих отношений. Если вы сначала используете код, вы можете использовать это отображение:
public class Product
{
int ID {get;set;}
public virtual ICollection<Tag> Tags {get;set;}
}
public class Tag
{
int ID {get;set;}
public virtual ICollection<Product> Products {get;set;}
}
// In your DbContext class:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().HasMany(x => x.Tags).WithMany(x => x.Products)
.Map(m =>
{
m.ToTable("Product_Tag"); // Relationship table name
m.MapLeftKey("ProductID"); // Name of column for product IDs
m.MapRightKey("TagID"); // Name of column for tag IDs
});
}
Затем вы можете сделать что-то вроде этого:
using (var context = new MyDbContext())
{
var product = new Product();
product.Name = "My product";
product.Tags.Add(new Tag {Name = "furniture"});
product.Tags.Add(new Tag {Name = "food"});
context.Products.Add(product);
context.SubmitChanges();
}
В этом случае EF автоматически создает новый продукт, два тега и две взаимосвязи между созданным продуктом и тегами.