Olá, estou praticando asp.net com entity fazendo uma rede social. Mas estou com problemas para gerar meu relacionamento entre usuário e contatos. Se alguém puder ajudar agradeço muito! Segue meu código abaixo.
Erro ao tentar gerar a tabela: "Introducing FOREIGN KEY constraint 'FK_dbo.UsuarioContatoes_dbo.Usuarios_UsuarioId' on table 'UsuarioContatoes' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors."
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace LeiaMais.Entidades
{
public class UsuarioContato
{
public int ContatoId { get; set; }
public virtual Contato Contatos { get; set; }
public int UsuarioId { get; set; }
public virtual Usuario Usuario { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace LeiaMais.Entidades
{
public class Contato
{
public int Id { get; set; }
public int UsuarioId { get; set; }
public virtual Usuario Usuario { get; set; }
public IList<UsuarioContato> UsuarioContato { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace LeiaMais.Entidades
{
public class Usuario
{
public int Id { get; set; }
[Required]
public string Nome { get; set; }
[Required, EmailAddress]
public string Email { get; set; }
public virtual IList<UsuarioContato> UsuarioContato { get; set; }
}
}
insira seu código aqui
using LeiaMais.Entidades;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace LeiaMais.DAO
{
public class LeiaMaisContext :DbContext
{
public DbSet<Usuario> Usuarios { get; set; }
public DbSet<Livro> Livros { get; set; }
public DbSet<Categoria> Categorias { get; set; }
public DbSet<Contato> Contato { get; set; }
public DbSet<UsuarioContato> UsuarioContatos { get; set; }
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Livro>().HasRequired(l => l.Usuario);
builder.Entity<Livro>().HasRequired(l => l.Categoria);
builder.Entity<UsuarioContato>().HasKey(uc => new { uc.ContatoId, uc.UsuarioId });
base.OnModelCreating(builder);
}
}
}
insira seu código aqui
namespace LeiaMais.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class Contatos : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Contatoes",
c => new
{
Id = c.Int(nullable: false, identity: true),
UsuarioId = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Usuarios", t => t.UsuarioId, cascadeDelete: true)
.Index(t => t.UsuarioId);
CreateTable(
"dbo.UsuarioContatoes",
c => new
{
ContatoId = c.Int(nullable: false),
UsuarioId = c.Int(nullable: false),
})
.PrimaryKey(t => new { t.ContatoId, t.UsuarioId })
.ForeignKey("dbo.Contatoes", t => t.ContatoId, cascadeDelete: true)
.ForeignKey("dbo.Usuarios", t => t.UsuarioId, cascadeDelete: true)
.Index(t => t.ContatoId)
.Index(t => t.UsuarioId);
}
public override void Down()
{
DropForeignKey("dbo.Contatoes", "UsuarioId", "dbo.Usuarios");
DropForeignKey("dbo.UsuarioContatoes", "UsuarioId", "dbo.Usuarios");
DropForeignKey("dbo.UsuarioContatoes", "ContatoId", "dbo.Contatoes");
DropIndex("dbo.UsuarioContatoes", new[] { "UsuarioId" });
DropIndex("dbo.UsuarioContatoes", new[] { "ContatoId" });
DropIndex("dbo.Contatoes", new[] { "UsuarioId" });
DropTable("dbo.UsuarioContatoes");
DropTable("dbo.Contatoes");
}
}
}