我有这节课:
public interface IUsciteForList
{
string Id { get; set; }
string NumeroDocumento { get; set; }
DateTime DataDocumento { get; set; }
string Nominativo { get; set; }
string Categoria { get; set; }
string SubCategoria { get; set; }
string Descrizione { get; set; }
decimal? Importo { get; set; }
DateTime? Scadenza { get; set; }
string Destinatario { get; set; }
bool IsPagata { get; }
}
public class Uscite :IUsciteForList
{
[BsonRequired]
[BsonId(IdGenerator =typeof(StringObjectIdGenerator))]
public string Id
{
get; set;
}
[Display(AutoGenerateField =false)]
[BsonRequired]
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime DataOperazione
{
get; set;
}
//[Display(Name ="Numero documento",Order =1,AutoGenerateField =true)]
[System.ComponentModel.DisplayName("Numero Documento")]
[BsonIgnoreIfDefault]
public string NumeroDocumento
{
get; set;
}
[Display(Name ="Data documento",Order =2,AutoGenerateField =true)]
[DisplayFormat(DataFormatString ="{0:d")]
[BsonRequired]
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime DataDocumento
{
get; set;
}
[BsonRequired]
[UpperCase]
public string Nominativo
{
get; set;
}
[BsonRequired]
[TitleCase]
public string Categoria
{
get; set;
}
[BsonIgnoreIfDefault]
[TitleCase]
public string SubCategoria
{
get; set;
}
[BsonIgnoreIfDefault]
public string Descrizione
{
get; set;
}
[BsonRequired]
[BsonIgnoreIfDefault(true)]
[BsonIgnoreIfNull(true)]
[BsonRepresentation(MongoDB.Bson.BsonType.Decimal128)]
public decimal? Importo
{
get; set;
}
[BsonIgnoreIfNull(true)]
[BsonIgnoreIfDefault(true)]
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime? Scadenza
{
get; set;
}
[BsonIgnoreIfNull]
public PagamentoMovimento Pagamento { get; set; }
[BsonIgnoreIfNull]
[BsonIgnoreIfDefault]
public IEnumerable<FileVari.File> Files { get; set; }
//[BsonIgnoreIfNull]
//public string FileFatturaXml { get; set; }
[BsonIgnoreIfDefault]
[BsonIgnoreIfNull]
public Model.FatturaData Fattura { get; set; }
//[BsonIgnoreIfDefault]
//public IFileMovimento[] Files { get; private set; }
[BsonRequired]
public string Destinatario { get; set; }
bool _ispagata;
[BsonIgnore]
public bool IsPagata
{
get { return Pagamento != null ? true : false; }
//set { _ispagata = value; }
}
}
public class UscitaForList:IUsciteForList
{
[Display(AutoGenerateField =false)]
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
public string Id { get; set; }
[Display(Name ="Numero documento",AutoGenerateField =true,Order =1)]
[DisplayFormat()]
public string NumeroDocumento { get; set; }
[Display(Name = "Data documento", AutoGenerateField = true, Order = 2)]
[DisplayFormat(DataFormatString ="{0:d}")]
public DateTime DataDocumento { get; set; }
[Display(Name = "Nominativo", AutoGenerateField = true, Order = 3)]
public string Nominativo { get; set; }
[Display(Name = "Categoria", AutoGenerateField = true, Order = 4)]
public string Categoria { get; set; }
[Display(Name = "Sub categoria", AutoGenerateField = true, Order = 5)]
public string SubCategoria { get; set; }
[Display(Name = "Descrizione", AutoGenerateField = true, Order = 6)]
public string Descrizione { get; set; }
[Display(Name = "Importo", AutoGenerateField = true, Order = 7)]
[DisplayFormat(DataFormatString = "{0:#,##0.00}", NullDisplayText = "")]
public decimal? Importo { get; set; }
[Display(Name = "Scadenza", AutoGenerateField = true, Order = 8)]
[DisplayFormat(DataFormatString ="{0:d}")]
public DateTime? Scadenza { get; set; }
[Display(Name = "Destinatario", AutoGenerateField = true, Order = 9)]
public string Destinatario { get; set; }
[Display(Name = "Pagata", AutoGenerateField = true, Order = 0)]
[DisplayFormat()]
public bool IsPagata { get; set; }
}
和这个投影:
var project = Builders<Uscite>.Projection.Expression(x => new
{
Id = x.Id,
NumeroDocumento = x.NumeroDocumento,
DataDocumento = x.DataDocumento,
Nominativo = x.Nominativo,
Categoria = x.Categoria,
SubCategoria = x.SubCategoria,
Descrizione = x.Descrizione,
Importo = x.Importo,
Scadenza = x.Scadenza,
Destinatario = x.Destinatario,
IsPagata = x.Pagamento != null ? true : false
});
我使用以下代码获取输入的数据:
var data = App.db.GetCollection<Uscite>("tbUscite").Find(new BsonDocument()).Project(project).As<IUsciteForList>().Limit(50);
我收到此错误: System.FormatException:无法确定接口类型MongoDbApp.Model.Movimento.IUsciteForList反序列化的对象的实际类型
如果我使用:
var data = App.db.GetCollection<Uscite>("tbUscite").Find(new BsonDocument()).Project(project).As<UscitaForList>().Limit(50);
我收到此错误: System.FormatException:元素“ DataOperazione”与MongoDbApp.Model.Movimento.UscitaForList类的任何字段或属性都不匹配
我的错误是什么?
谢谢