实体框架EntityKey /外键问题

时间:2010-05-31 12:44:01

标签: c# linq linq-to-sql ado.net

我一直收到同样的错误:'VlaamseOverheidMeterEntities.ObjectMeter'中的实体参与'FK_ObjectMeter_Meter'关系。找到了0个相关的“Meter”。预计1'米'。

我有以下表结构:

Meter 1< - * ObjectMeter * - > 1个VO_Object

始终是相同的情况:第一个仪表被添加到数据库,第二个仪表给出上面的错误。

我的经理中有以下代码:

public List<string> addTemporary(string username, string meterNaam, string readingType, string parentID) {
        Meter meter = new Meter();
        VO_Object voObject = objectManager.getObjectByID(parentID);
        ObjectMeter objMeter = new ObjectMeter();

        meter.readingType = (int)Enum.Parse(typeof(ReadingType), readingType);
        meter.isActive = true;
        meter.name = meterNaam;
        meter.startDate = DateTime.Now;
        meter.endDate = DateTime.Now.AddYears(6000);
        meter.uniqueIdentifier = "N/A";
        meter.meterType = (int)Enum.Parse(typeof(MeterType), "NA");
        meter.meterCategory = (int)Enum.Parse(typeof(MeterCategory), "NA");
        meter.energyType = (int)Enum.Parse(typeof(EnergyType), "NA");
        meter.utilityType = (int)Enum.Parse(typeof(UtilityType), "NA");
        meter.unitOfMeasure = (int)Enum.Parse(typeof(UnitOfMeasure), "NA");

        objMeter.valid_from = meter.startDate;
        objMeter.valid_until = meter.endDate;

        objMeter.Meter = meter;
        objMeter.VO_Object = voObject;

        createMeter(meter);

        List<String> str = new List<string>();
        str.Add("" + meter.meterID);
        str.Add(meter.name);
        return str;
    }

这在我的Dao Class中链接到数据库:

internal void CreateMeter(Meter _meter) {
        _entities.AddToMeter(_meter);
        _entities.SaveChanges();
    }

有人可以解释一下这个错误吗?

罗纳德

1 个答案:

答案 0 :(得分:0)

如果我理解你的代码:VO_Object是ObjectMeter的父代,它是Meter的父代。 VO_Object已存在于数据库中。您应该在创建Meter之前创建(保存)ObjectMeter。