Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不存储EDM关联_C#_Database_Entity Framework_Sql Server Ce - Fatal编程技术网

C# 不存储EDM关联

C# 不存储EDM关联,c#,database,entity-framework,sql-server-ce,C#,Database,Entity Framework,Sql Server Ce,只是在玩实体框架 现在我有了一个简单的数据库,其中包含到个实体 Person (Id, Name) Profession (Id, Designation) 在Id上有关联的 我想通过以下代码为一个人提供一种新的职业: using (PersonDataModelContainer dmc = new PersonDataModelContainer()) { var pers = new Person() { Id = PersonId }; dmc.Person.Attac

只是在玩实体框架

现在我有了一个简单的数据库,其中包含到个实体

Person (Id, Name)
Profession (Id, Designation)
在Id上有关联的

我想通过以下代码为一个人提供一种新的职业:

using (PersonDataModelContainer dmc = new PersonDataModelContainer())
{
    var pers = new Person() { Id = PersonId };
    dmc.Person.Attach(pers);
    var prof = new Profession() { Id = ProfessionId };
    dmc.Profession.Attach(prof);
    pers.Professions.Add(req);

    var result = dmc.SaveChanges();

    return (result > 0);
};
我是EF的新手,所以可能很简单

结果是:什么也没发生,我也没看到 “关联”表中的新关联

如何从现有实体添加新关联

是否有关于使用该概念的良好文档

-编辑- 在bin\debug文件夹中找到数据库的副本。 它也不包含关联。但似乎有 每次启动更新时都会写入该文件 在上面的代码中。

这应该可以工作:

using (PersonDataModelContainer dmc = new PersonDataModelContainer())
{
    var pers = new Person() { Id = PersonId };
    var prof = new Profession() { Id = ProfessionId };
    pers.Professions.Add(prof);

    dmc.Persons.Add(pers);
    var result = dmc.SaveChanges();
}

似乎已经发现了问题:

在连接字符串中,我有| DataPath |,它被设置为副本 在运行时

将数据路径设置为主函数开头的实际路径, 一切似乎都很好

这可以通过以下方式实现: AppDomain.CurrentDomain.SetData(“DataDirectory”,@“C:\myDB”)

其中C:\myDB是sdl文件所在的路径

目前我不知道,也许在部署时该怎么做 只需注释掉那一行就足够了,有了部署路径
作为数据库路径。

我想您应该使用这个


非常感谢您的支持!我用dmc.Persons.AddObject尝试过,因为Add不可用。我得到一个UpdateException,其中包含“无法将重复值插入唯一索引。[表名=专业,约束名=PK_专业]更改后的结果现在为0,问题中的代码是1您正在使用的实体框架的哪个版本?它是SQL Server CE数据库(sdl)上的Edmx version=“2.0”非常感谢!我得仔细看看
            using (var con = new PersonDataModelContainer())
            {
                var pers = new Person() { Id = PersonId };

                int pId = 0;
                if (pers.PersonId > 0)
                {
                    pers = con.Persons.FirstOrDefault(c => c.PersonId == pers.PersonId);
                    pId = pers.pId;
                }
                else
                    pId = con.Users.NextId(c => c.PersonId) + 1;

                if (pers.UserId == 0)
                    con.Persons.AddObject(pers);
                con.SaveChanges();
                pId = Persons.PersonId;


                var prof = new Profession() { Id = ProfessionId, PersonId = pId };

                int profId = 0;
                if (prof.PersonId > 0)
                {
                    prof = con.Professions.FirstOrDefault(c => c.ProfessionId == prof.ProfessionId);
                    profId = prof.PersonId;
                }
                else
                    profId = con.Professions.NextId(c => c.ProfessionId) + 1;

                if (prof.ProfessionId == 0)
                    con.Professions.AddObject(prof);
                con.SaveChanges();
                prof.ProfessionId = profId;
            }