2017-02-25 1 views
1

J'essaye de construire un site web MVC avec MongoDB. Je suis un débutant avec MongoDB. Lorsque je tente d'insérer de nouvelles données dans une collection, il jette l'erreur ci-dessousL'argument de type 'MongoDB.Bson.ObjectId' viole la contrainte du paramètre de type 'TTarget'

argument de type « MongoDB.Bson.ObjectId » viole la contrainte du paramètre de type « TCible ».

Mon code pour insérer comme ci-dessous ...

public void Add<T>(T item) where T : class, new() 
{ 
    _db.GetCollection<T>().Save(item); 
} 

mon interface IEntity est comme ci-dessous

public interface IEntity 
{ 
    [BsonId] 
    ObjectId Id { get; set; } 
    DateTime CreatedDate { get; set; } 
    DateTime LastModifiedDate { get; set; } 
    int UserId { get; set; } 
    bool IsActive { get; set; } 
    bool IsDelete { get; set; } 
} 

Ma classe d'entité est comme ci-dessous

public class Entity : IEntity 
{ 
    [BsonId] 
    public ObjectId Id { get; set; } 

    public DateTime CreatedDate { get; set; } 

    public DateTime LastModifiedDate { get; set; } 

    public int UserId { get; set; } 

    public bool IsActive { get; set; } 

    public bool IsDelete { get; set; } 
} 

et ce est le code qui appelle l'insertion ...

IBusinessArticle businessArticle = new BusinessArticle(); 
businessArticle.Add(new Article { Title = "Test MongoDB", Body = "Body Body Body Body Body Body" }); 

Pourquoi donne-t-il une erreur concernant la violation de la contrainte. Je ne comprends pas. S'il vous plaît aider ...

Répondre

2

si vous insérez nouvel élément, vous ne devez pas appeler Save, vous devez appeler InsertOne:

public void Add<T>(T item) where T : class, new() 
{ 
    _db.GetCollection<T>().InsertOne(item); 
}