2016-12-28 75 views
-2

我有類推銷員BSON忽略場

public class Salesman 
{ 
    [BsonId] 
    [BsonRepresentation(BsonType.ObjectId)] 
    [JsonConverter(typeof(ObjectIdConverter))] 
    public ObjectId Id { get; set; } 

    [BsonElement("complementTime")] 
    public DateTime ComplementTime { get; set; } 

    [BsonElement("futureWorker")] 
    public FutureWorkerInfo FutureWorker { get; set; } 
} 

和類顧問

這個班的
public class Consultant 
{ 
    [BsonId] 
    [BsonRepresentation(BsonType.ObjectId)] 
    [JsonConverter(typeof(ObjectIdConverter))] 
    public ObjectId Id { get; set; } 

    [BsonElement("complementTime")] 
    public DateTime ComplementTime { get; set; } 

    [BsonElement("futureWorker")] 
    public FutureWorkerInfo FutureWorker { get; set; } 

    [BsonElement("recommendedWorkers")] 
    public FutureWorkerInfo[] RecommendedWorkers { get; set; }  
} 

既有類

public class FutureWorkerInfo 
{ 
    [BsonElement("name")] 
    public string Name { get; set; } 

    [BsonElement("homeAddress")] 
    public FutureWorkerHomeAddress HomeAddress { get; set; } 

    [BsonElement("phone")] 
    public string Phone { get; set; } 

    [BsonElement("secondPhone")] 
    public string SecondPhone { get; set; } 

    [BsonElement("email")] 
    public string Email { get; set; } 

    [BsonElement("birthDate")] 
    public string BirthDate { get; set; } 
} 

,我需要忽略場「 homeAddress「當我使用c老闆「推銷員」。這意味着,只有在Salesman中,我不必從mongo數據庫中插入或讀取此字段。當我使用顧問時,我應該'可以'使用字段「homeAddress」進行一些操作。

+0

你可以嘗試再創建一個類將繼承'FutureWorkerInfo'(例如'ExtendedFutureWorkerInfo'),在'HomeAddress'字段移動到這個新類和刪除'FutureWorkerHomeAddress'。然後在'Salesman'中,您可以使用現有的類,並在'Consultant'中使用新的類。這有意義嗎? –

+0

Thx,但不,我需要留在普通實體 –

+2

請不要破壞你的帖子。 – Glorfindel

回答

0

你可以用接口來做到這一點。

創建ISalesmanFutureWorkInfo

public interface ISalesmanFutureWorkInfo 
{ 
    string Name { get; set; } 
    string Phone { get; set; } 
    string SecondPhone { get; set; } 
    string Email { get; set; } 
    string BirthDate { get; set; } 
} 

創建具有是homeAddress和繼承ISalesmanFutureWorkInfo

public interface IConsultantFutureWorkInfo : ISalesmanFutureWorkInfo 
{ 
    FutureWorkerHomeAddress HomeAddress { get; set; } 
} 

改變你的類使用接口的IConsultantFutureWorkInfo。

public class Consultant 
{ 
    [BsonId] 
    [BsonRepresentation(BsonType.ObjectId)] 
    [JsonConverter(typeof(ObjectIdConverter))] 
    public ObjectId Id { get; set; } 

    [BsonElement("complementTime")] 
    public DateTime ComplementTime { get; set; } 

    [BsonElement("futureWorker")] 
    public IConsultantFutureWorkInfo FutureWorker { get; set; } 

    [BsonElement("recommendedWorkers")]  
    public IConsultantFutureWorkInfo[] RecommendedWorkers { get; set; } 
} 

public class Salesman 
{ 
    [BsonId] 
    [BsonRepresentation(BsonType.ObjectId)] 
    [JsonConverter(typeof(ObjectIdConverter))] 
    public ObjectId Id { get; set; } 

    [BsonElement("complementTime")] 
    public DateTime ComplementTime { get; set; } 

    [BsonElement("futureWorker")] 
    public ISalesmanFutureWorkInfo FutureWorker { get; set; } 
} 
+0

嗯。看起來不錯:) –

-1
[BsonElement("homeAddress")] 
[BsonIgnoreIfNull] 
public FutureWorkerHomeAddress HomeAddress { get; set; } 

現在一切正常