我想知道如何使用mapper类将Collection存储到数据库中。
类型'System.Collections.Generic.ICollection'必须是非可空值类型才能在泛型类型或方法'System.Data.Entity.ModelConfiguration.Configuration.StructuralTypeConfiguration.Property中将其用作参数'T'( System.Linq.Expressions.Expression&GT)'
我的Mapper类
public LocatieMapper()
{
//Table
this.ToTable("Locatie");
//Properties => Columns
this.Property(p => p.Naam);
this.Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Property(p => p.GemiddeldeMaandTemperaturen).IsRequired();
//Primary Key
this.HasKey(k => k.Id);
//Relationships
}
}
}
这是我的Locatie Class
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Klimatogrammen.Models.Domain
{
public class Locatie
{
[Key]
public int Id { get; set; }
private String naam;
private ICollection<float> gemiddeldeMaandTemperaturen;//want to map this
private ICollection<float> totaleMaandNeerslag;//and this
public Locatie(String naam, ICollection<float> gemiddeldeMaandTemperaturen, ICollection<float> totaleMaandNeerslag)
{
this.Naam = naam;
// test
this.GemiddeldeMaandTemperaturen = gemiddeldeMaandTemperaturen;
this.TotaleMaandNeerslag = totaleMaandNeerslag;
}
// other code
添加了构造函数以获取额外信息
调用构造函数的示例
temperatuur = new List<float> { 3.46F, 3.8F, 6.65F, 9.25F, 12.95F, 15.35F, 17.75F, 17.6F, 14.8F, 11.2F, 7F, 4.05F };
neerslag = new List<float> { 60.5F, 63F, 56.3F, 42.4F, 59.7F, 60F, 77.3F, 88.4F, 73.7F, 68.3F, 80.9F, 82.5F };
Locatie gent = new Locatie("Gent", temperatuur, neerslag);
答案 0 :(得分:0)
您的问题是您正在使用StructuralTypeConfiguration,因此Property方法需要一个描述返回值类型的函数的表达式。 ICollection<T>
不是值类型(实际上,所有接口类型都是引用类型)。
请尝试使用ConventionTypeConfiguration。