enter code here
[Table("Articles")]
public class Article : IEntity
{
[Required, StringLength(60)]
public string Title { get; set; }
public int CategoryId { get; set; }
[Required, StringLength(2500)]
public string Text { get; set; }
public int LinkCount { get; set; }
public virtual User Owner { get; set; }
public virtual Category Category { get; set; }
public virtual Html_Content_Result HtmlPage { get; set; }
public virtual List<Comment> Comments { get; set; }
public virtual List<Liked> Likes { get; set; }
}
[Table("Users")]
public class User : IEntity
{
[StringLength(25)]
public string Name { get; set; }
[StringLength(25)]
public string Lastname { get; set; }
[StringLength(25), Required]
public string Username { get; set; }
[StringLength(100), Required]
public string Password { get; set; }
[StringLength(70), Required]
public string Email { get; set; }
public bool IsActive { get; set; }
[Required]
public Guid ActivateGuid { get; set; }
public virtual List<Article> Articles { get; set; }
public virtual List<Comment> Comments { get; set; }
public virtual List<UsersRole> UsersRoles { get; set; }
public virtual List<Liked> Likes { get; set; }
}
enter image description hereI have two entity named User and named Article.
I created my db with entityframework codefirst.
There is one to many relation between this two table.
Problem is when i insert operation to article table i add to the model user entity from session and inserted repeated entery on my user table beacuse i already inserted my user before.What should i do for solution?
3 Réponses :
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
[ValidateInput(false)]
public ActionResult Index(Article model)
{
BusinessLayerResult<Article> res = new BusinessLayerResult<Article>();
res.Result = model;
if (ModelState.IsValid)
{
model.HtmlPage.Id = res.Result.Id;
model.Owner = Session["user"] as User;
_articleService.Add(res);
}
}
public int Add(TEntity entity)
{
if (entity is IEntity)
{
IEntity myEntity = entity as IEntity;
DateTime dateTime = DateTime.Now;
myEntity.CreatedOn = dateTime;
myEntity.ModifiedOn = dateTime;
myEntity.ModifiedUsername = identity.Id.ToString();
}
using (TContext context = new TContext())
{
context.Configuration.LazyLoadingEnabled = false;
var addedEntity = context.Entry(entity);
addedEntity.State = EntityState.Added;
return context.SaveChanges();
}
}
Le problème est que vous créez un nouveau contexte qui ne suive pas votre utilisateur existant ( Model.owner code>). Il semble que vous ayez mis en œuvre un référentiel générique et je ne sais pas comment gérer ce problème dans ce cas, mais vous devrez en général ajouter votre utilisateur à des entités suivies avec context.attach code> ou context.Entry code>. Vous pouvez également essayer de changer votre code dans: using (TContext context = new TContext())
{
context.Configuration.LazyLoadingEnabled = false;
context.Attach(entity)
return context.SaveChanges();
}
Veuillez ajouter votre code d'insertion qui produit des duplicats.
Bien sûr, je l'ai ajouté ci-dessous.
1) S'il vous plaît ajoutez-le à la question 2) Veuillez ajouter du code qui fonctionne avec l'ensemble de l'entité