标签: entity-framework-5

ReferentialConstraint中的依赖属性映射到存储生成的列.专栏:'FeeID'

我收到错误:

{"ReferentialConstraint中的依赖属性映射到存储生成的列.列:'FeeID'."}

设置:我手动创建了数据库(SQL Server 2012和SSMS)

我没有edmx文件

我有两个类,FeeMetaData并且Fee,其映射到两个表中的数据库(PFD.FeeMetaDataPFD.Fees)

数据库结构

FeeMetadata
------------ 
FeeID  BIGINT  IDENTITY(1,1) PRIMARY KEY 
Something VARCHAR(25) NOT NULL

Fees
------------ 
FeeID  BIGINT  PRIMARY KEY NOT NULL
FeeBatchID  BIGINT NOT NULL
PersonID BIGINT 
Amount DECIMAL(18,2) NOT NULL
DueDate DATE NOT NULL
Run Code Online (Sandbox Code Playgroud)

FeeMetadata.FeeID和Fees.FeeID之间存在一对一的关系

阶级结构

Imports System.ComponentModel.DataAnnotations
Imports System.ComponentModel.DataAnnotations.Schema
Namespace PFD
    <Table("FeeMetadata", Schema:="PFD")>
    Public Class FeeMetadata

        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub New(ByVal tFee As SOACourt_v1)
            Me.New()
            Me.PfdFee = New PFD.Fee(tFee)
        End …
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net-mvc entity-framework entity-framework-5

1
推荐指数
1
解决办法
8610
查看次数

使用linq to entities检查数据库中是否已存在实体列表

我有一个来自外部来源的实体列表.我需要将它与我已有的相比较,并且只添加不存在的那些.下面的伪代码.

 var newVersions = item.Versions
      .Where(s => db.ExistingVersions
           .Select(t=>t.versionID)
           .DoesNotContains(s.versionID));
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,我不知道如何解决它.我不想使用for循环,因为我相信这意味着我会有数百个数据库命中只是为了检查每个项目的版本.我正在加载多个项目,每个项目有多达100个版本.

c# linq-to-entities entity-framework-5

1
推荐指数
1
解决办法
2649
查看次数

启用迁移后,项目无法构建

辅助信息:我正在遵循有关复数视力的MVC 4课程问题:我有一个ASP.NET MVC4 Internet应用程序。一切都如本书所述,但enable-migrations进入软件包管理器控制台后出现错误:The project 'somesite.web' failed to build

我死了吗?

asp.net-mvc-4 ef-migrations entity-framework-5

1
推荐指数
1
解决办法
4102
查看次数

主键值在Entity框架数据库中不会自动增加

我肯定错过了一些非常小的东西,但我遇到了主要值自动增量的问题.我已经创建了两个简单的表,我已经采用了Entity Framework 5的现有数据库模型第一种方法.我从控制台程序中简单地在表中添加值.

我的问题是代码第一次工作正常,但如果我试图通过再次运行整个应用程序来添加更多的价值崩溃,我找到了原因; EF不会自动增加主索引.

CREATE TABLE [dbo].[Book_Titles] (
[Book_ID] INT            NOT NULL,
[Title]   NVARCHAR (150) NOT NULL,
PRIMARY KEY CLUSTERED ([Book_ID] ASC)
);


CREATE TABLE [dbo].[Books_Authors] (
[Author_Id]   INT            NOT NULL,
[Author_Name] NVARCHAR (150) NOT NULL,
[Book_ID]     INT            NULL,
PRIMARY KEY CLUSTERED ([Author_Id] ASC),
FOREIGN KEY ([Book_ID]) REFERENCES [dbo].[Book_Titles] ([Book_ID])
);
Run Code Online (Sandbox Code Playgroud)

控制台程序

namespace Database_First_01
{
class Program
{
    static void Main(string[] args)
    {


        using (var db = new BooksContext())
        {
            var book = new Book_Titles()
            {
                Title ="EF …
Run Code Online (Sandbox Code Playgroud)

c# linq sql-server entity-framework-5

1
推荐指数
1
解决办法
627
查看次数

如何升级Entity Framework 5 Code First的DataAnnotations

我正在尝试从EF 4.3.1升级到EF 5,也从.Net 4升级到.Net 4.5.这是一个给我带来麻烦的课程的例子:

using System.ComponentModel.DataAnnotations;

public class MyClass
{
    [Key, Column(Order = 0)]
    public int CompositeKey1Id { get; set; }

    [Key, Column(Order = 1)]
    public int CompositeKey2Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

首先我得到错误Cannot resolve symbol 'Column'.

所以我添加, using System.ComponentModel.DataAnnotations.Schema;因为ColumnAttribute移动到Schema命名空间.现在我收到一个Ambiguous reference错误,因为在EntityFramework.dll和System.ComponentModel.DataAnnotations.dll中都存在ColumnAttribute.

所以我尝试删除System.ComponentModel.DataAnnotations.dll作为参考,现在我得到Cannot resolve symbol 'Key'KeyAttribute在该DLL中,但不是在EntityFramework.dll中.

除非在EF5中不再需要KeyAttribute,否则我将不得不降级到.Net 4以获得此代码进行编译.这不可能是对的,是吗?我在这里错过了什么?

.net c# entity-framework ef-code-first entity-framework-5

1
推荐指数
1
解决办法
3460
查看次数

使用Linq在两个列表之间规范化的最佳方法是什么?

给定C#中的两个IEnumerable实例(称之为a和b),删除不在b中的所有值的最佳方法是什么,并添加不在b中的所有b值?

我知道我通常可以设置a = b,但这最终是为了通过实体框架CodeFirst在MVC应用程序中持久保存到DB,因此需要注意一些状态.事实上,我们正在谈论根据客户发布的内容更新记录.

似乎工作的最接近的涉及foreach循环,一个迭代'a'列表并填充'要删除的项'的集合,另一个迭代'b'列表以识别'要添加的项',然后分别在"要删除的项目"和"要添加的项目"集合中分别添加和删除项目(因为您在迭代时无法修改'a'集合.

但是,这感觉很笨重; 有没有更好的办法?

更新 为清楚起见,我会举个例子.假设我有一个我从DB中获取的实体代表一个博客帖子(因为那个例子永远不会累...)并且说Post有一组标签.从客户端,我得到一个标签列表,现在应该是标准的"规范"列表,但它们都不是实体,它只是一个内存中的集合.我想要做的是确保Post.Tags匹配客户端发布的标签,而不在数据库中创建重复的标签.

c# linq entity-framework-5

1
推荐指数
1
解决办法
167
查看次数

如何使用EF仅更新单个字段

这是当前的基本代码:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(Registration registration)
    {
        if (ModelState.IsValid)
        {
            db.Entry(registration).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(registration);
    }
Run Code Online (Sandbox Code Playgroud)

我在注册表中有大约15个字段,我怎么只想更新"日期"字段,我在这里收到的对象是"注册",它只有日期值,但是当前代码更新所有条目,什么我想要的是更新"日期"字段,我在"注册"中获得了它的价值

帮助将不胜感激:)

asp.net asp.net-mvc entity-framework entity-framework-5

1
推荐指数
1
解决办法
4551
查看次数

DatabaseGeneratedOption.None公约

我想为我的所有实体手动插入id.是否可以创建某种约定,或者我必须为每个实体设置HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)(或添加DatabaseGenerated属性)?

编辑

有一种更简单的方法可以使用接受的答案:

modelBuilder.Conventions.Remove<StoreGeneratedIdentityKeyConvention>();
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-5

1
推荐指数
1
解决办法
617
查看次数

以下方法或属性之间的调用不明确:'EntitiesLan.EntitiesLan()'和'EntitiesLan.EntitiesLan()'

我有以下代码,不知道为什么抛出此错误.

 using (var context = new EntitiesPlesk())
       {
             /////Some Code
       } 

using (var context = new EntitiesLan())   // Error Line
       {
             /////Some Code
       } 
Run Code Online (Sandbox Code Playgroud)

我正在使用.sdf Databaseedmx模型的文件(EntitiesLan)请帮我在哪里我应该改变以摆脱这个错误....谢谢!

c# wpf linq-to-entities ambiguity entity-framework-5

1
推荐指数
1
解决办法
1977
查看次数

具有输出参数的存储过程在C#中返回-1

我有一个使用的简单C#应用程序,Entity Framework 5.0应使用输出参数调用存储过程。问题在于它不起作用,而是返回-1。

c#我的代码如下所示:

// Define the output paramaters
SqlParameter operatorID = new SqlParameter("@operatorID", SqlDbType.Int);
operatorID.Direction = ParameterDirection.Output;
SqlParameter operatorCode = new SqlParameter("@operatorCode", SqlDbType.Int);
operatorCode.Direction = ParameterDirection.Output;

var parameters = new List<object>();
parameters.Add(operatorID);
parameters.Add(operatorCode);

var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID, @operatorCode", parameters.ToArray());
Run Code Online (Sandbox Code Playgroud)

存储过程如下所示:

CREATE PROCEDURE [dbo].[my_sp_name] 
( 
     @operatorID        int             OUTPUT 
    ,@operatorCode      int             OUTPUT
 )
AS
    SET @operatorID = 123
Run Code Online (Sandbox Code Playgroud)

我知道这没有任何意义,但这只是一个测试。

执行c#代码后的问题是该noOutput值是-1并且该operatorID值是空的,我希望它在哪里123

有人知道我做错了什么吗?

c# sql-server stored-procedures entity-framework entity-framework-5

1
推荐指数
1
解决办法
1824
查看次数