使用c#和实体框架的新功能。 我的控制器LogIn在访问dbcontext时不起作用,以比较在表单中输入的登录用户。
问题在于控制器上的这一行:
var personne = db.Personnes.FirstOrDefault(p => p.LoginPersonne == login);
这是班级:
[Table("PERSONNE")]
public class Personne
{
// Propriétés de la classe User
[Key]
[Column("ID_PERSONNE")]
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int IdPersonne { get; set; }
//[Required]
[Column("NOM_PERSONNE")]
public string NomPersonne { get; set; }
[Column("PRENOM_PERSONNE")]
public string PrenomPersonne { get; set; }
[Column("LOGIN_PERSONNE")]
[Display(Name = "Nom d’utilisateur: ")]
public string LoginPersonne { get; set; }
#region Properties link
// Lien Many to Many avec Evenement (Une personne peut s'inscrire à plusieurs Evenements)
[Column("ID_EVENEMENT")]
[ForeignKey("IdEvenement")]
public virtual ICollection<Evenement> Evenements { get; set; }
// Lien One to Many avec Statut (Une personne a 1 et 1 seul statut)
[Column("ID_STATUT_PERSONNE")]
public int IdStatutPersonne { get; set; }
[ForeignKey("IdStatutPersonne")]
public virtual StatutPersonne statutsPersonne { get; set; }
}
控制器:
[HttpPost]
public ActionResult LogIn(Models.Personne personne)
{
// On regarde si le modèle est valide
if (ModelState.IsValid)
{
if(IsValid(personne.LoginPersonne))
{
FormsAuthentication.SetAuthCookie(personne.LoginPersonne, false);
return RedirectToAction("Index", "Login");
}
else
{
ModelState.AddModelError("", "Login n'existe pas");
}
}
return View(personne);
}
// Méthode pour vérifier si le login est dans la base
private bool IsValid(string login)
{
bool isValid = false;
using (var db = new AgendaContext())
{
var personne = db.Personnes.FirstOrDefault(p => p.LoginPersonne == login);
if (personne != null)
{
if (personne.LoginPersonne == login)
{
isValid = true;
}
}
}
return isValid;
}
非常感谢! (对不起我的英文)
答案 0 :(得分:0)
忘记了dbcontext:
public AgendaContext() : base("OracleDbContext") { } #endregion #region Properties public DbSet<Personne> Personnes { get; set; } public DbSet<StatutPersonne> StatutsPersonne { get; set; } public DbSet<Evenement> Evenements { get; set; } public DbSet<Lieu> Lieux { get; set; } public DbSet<CategorieEvenement> CategoriesEvenement { get; set; } #endregion #region Methods protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema("AGENDACTCS"); modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); modelBuilder.Entity<Personne>(). HasMany(t => t.Evenements). WithMany(t => t.Personnes). Map( m => { m.MapLeftKey("ID_PERSONNE"); m.MapRightKey("ID_EVENEMENT"); m.ToTable("RESERVATION"); });
base.OnModelCreating(modelBuilder);
}