2017-09-04 3 views
0

IMongoCollection 인스턴스의 CRUD 메서드를 재정의 할 수 있는지와 그 방법을 알고 싶습니다. 이것은 단순화 된 MongoContext 객체입니다.MongoDb .NET CRUD 메서드 재정의

public class MongoContext 
{ 
    protected internal MongoClient client; 
    protected internal IMongoDatabase database; 

    public MongoContext(string connectionString, string databaseName) 
    { 
     client = new MongoClient(connectionString); 
     database = client.GetDatabase(databaseName); 
    } 

    public IMongoCollection<Event> Events 
    { 
     get { return database.GetCollection<Event>("Event"); } 
    } 
} 

그리고 여기 나는 그것을 호출 오전 : 나는 창조의 날짜와 요소가 수정 된 마지막 하루를 저장할이 컬렉션의 모든 요소에 대해

var mongoContext = new MongoContext("....", "EventDb"); 
var newEvent = new Event() { EventName = "Event Foo" } 
mongoContext.Events.InsertOne(newEvent); 

.

public override void InsertOne(TDocument document, InsertOneOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) 
{ 
    document.DateCreation = DateTime.UtcNow; 
} 

어떻게 구현할 수 있습니까?

+0

이벤트 생성자에서 수행하고 표준 mongo API 호출을 계속 사용합니다. – BOR4

+0

일반적인 것을 구현하고 싶습니다. 실제 응용 프로그램에서는 여러 다른 장소에서 많은 문서를 만들 수있었습니다. – Misi

답변

0

저는 이전에이 같은 문제에 휩싸였습니다. 그리고 원래 메서드를 재정의하려고 시도했지만 쉬운 방법이 없습니다. 그러나 나는

[BsonIgnoreExtraElements(Inherited = true)] 
public abstract class MongoBaseDocument 
{ 
    public BsonObjectId Id { get; set; } 

    public DateTime DateCreated { get; set; } 

    public DateTime DateModified { get; set; } 

    [BsonIgnore] 
    [JsonIgnore] 
    public bool IsNewEntity => Id == null || Id == BsonObjectId.Empty; 
} 

같은 기본 클래스를 만들어 문제를 해결하기 위해 관리 그리고 다른 몽고 관련 클래스가이 문제를 해결하고 필요한 경우 더 많은 기능을 추가 할 수 있습니다

public class MongoObject : MongoBaseDocument 

로 상속했다 .