2017-10-10 1 views
0

Je développe un site Web en utilisant asp.net mvc 5 et la base de données que j'utilise est MS SQL Server Management Studio 17. En ce moment, je veux insérer et mettre à jour certaines données avec la relation parent et enfant à la base de données en utilisant le framework d'entité en une seule fois.C# Comment insérer/mettre à jour les données parent et enfant à la base de données sql en utilisant framework d'entité dans asp.net mvc

La table parent (Comptes):

public class Accounts 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 

    //The foreign key in database 
    public int UserAddressId { get; set; } 

    //The child collection 
    public virtual ICollection<Addresses> Addresses { get; set; } 
} 

La table enfant (Adresse):

public class Addresses 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int AddressId { get; set; } 

    [ForeignKey("AddressId")] 
    public virtual Accounts Account { get; set; } 
} 

Je sais sql si je veux insérer des données dans la table parent, je dois créez d'abord les données de la table enfant, puis insérez les données dans la table parente. Cependant, je ne sais pas comment le faire dans un cadre d'entité.

Question 1: Est-ce que je configure correctement la relation dans les classes d'entités?

Question 2: Comment insérer/mettre à jour les données dans la base de données en utilisant le framework d'entité? Je veux le faire en un coup, s'il vous plaît fournissez-moi quelques exemples de code.

+0

* Je veux le faire en une fois * Cela dépend de ce que vous voulez insérer. S'il vous plaît montrer votre code actuel. –

+0

Bonjour @GertArnold, je veux insérer l'adresse et le compte à la base de données. Étant donné que la table UserAddressId dans le compte est une clé étrangère pointant sur l'AddressId de la table Address, je dois d'abord insérer les données d'adresse avant d'insérer les données dans la table Account. De plus, j'ai besoin de l'AddressId dans la table Address pour la table Account en tant que clé étrangère après la création des données d'adresse. – IYU

Répondre

0

Modèles:

public class Account 
{ 
    public int AccountId { get; set; } 
    public virtual ICollection<Addresses> Addresses { get; set; } 
} 

public class Address 
{ 
    public int AddressId { get; set; } 
    public int AccountId { get; set; } 
    public virtual Account Account { get; set; } 
} 

DbContext:

public partial class ApplicationDbContext: DbContext 
{ 
    public AppContext(): base("name=ApplicationDbContext") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

    } 

    public virtual DbSet<Account> Accounts { get; set; } 
    public virtual DbSet<Address> Addresses { get; set; } 
} 

Controller:

public class HomeController : Controller 
{ 
    public ApplicationDbContext _context; 

    public HomeController(ApplicationDbContext context) 
    { 
     _context = context; 
    } 
    ...   
} 

Ensuite, jetez un oeil this article pour les opérations d'ajout et de mise à jour.