如何使用映射器进行ICollections <float> </float>

时间:2015-02-18 22:35:59

标签: c# mapping

我想知道如何使用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);

1 个答案:

答案 0 :(得分:0)

您的问题是您正在使用StructuralTypeConfiguration,因此Property方法需要一个描述返回值类型的函数的表达式。 ICollection<T>不是值类型(实际上,所有接口类型都是引用类型)。

请尝试使用ConventionTypeConfiguration。