{"来自物化系统的指定演员' System.Guid'输入' System.Int32'类型无效。"

时间:2016-07-14 15:12:37

标签: c# asp.net entity-framework

我有一个实体框架模型,其中包含一个资产表,如下所示:

public partial class Asset
{
    public int Switch { get; set; }
    public string Port { get; set; }
    public string Name { get; set; }
    public string Connection { get; set; }
    public string Interface { get; set; }
    public string ConnectionUser { get; set; }
    public string ConnectionDate { get; set; }
}

我正在努力只返回“姓名”#39;柱。这是我用来执行此操作的代码:

    // create the entity model for DB operations
    acls3Entities entities = new acls3Entities();
    List<Asset> assets = entities.Assets.ToList();

    foreach (Asset asset in assets)
    {
        Console.WriteLine(string.Format("{0}", asset.Name));
    };

然而,它在定义&#39; assets&#39;的行上给了我这篇文章标题中引用的错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

GUID不是int,在数据库中,Switch是GUID。

GUID是由 -

分割的十六进制数字

以下是GUID的三个例子:

839E4FB1-F5F5-4C46-AFD1-000002CC625F

06F6D8BA-C10D-4806-B190-000006BA0513

2D3343FD-3E8A-4B33-9198-00002031F5F8

int不能包含字母,也不能包含 -

所以你的资产更像是:

public partial class Asset
{
public Guid Switch { get; set; }  // here <- GUID
public string Port { get; set; }
public string Name { get; set; }
public string Connection { get; set; }
public string Interface { get; set; }
public string ConnectionUser { get; set; }
public string ConnectionDate { get; set; }
}

另外,请确保您的edmx文件始终是最新的,这是您在遇到实体错误时应该检查的内容。

这样做:

  1. 在项目中找到你的.edmx文件(你的文件可能叫做acls3Entities.edmx)

  2. 删除该页面内的所有内容......看起来有点像frigthening?在这样做之前复制你的项目,这样你就可以备份。

  3. 右键单击白色虚空中的某个位置,然后选择Update from database或类似的东西(我的视觉工作室不是英语......)

  4. 选择您需要的所有表格/视图/存储过程

答案 1 :(得分:0)

I solved this problem by using查询条件两端的ToString()函数。

初始问题:

Guid userId = Guid.Parse(User.Identity.GetUserId());    
candidateDashBoard.DismissalRecord = db.DismissalRecords.Where(c => 
                  c.CandidateId == userId).FirstOrDefault();

解决方案:

Guid userId = Guid.Parse(User.Identity.GetUserId());
candidateDashBoard.DismissalRecord = db.DismissalRecords.Where(c => 
                  c.CandidateId.ToString() == userId.ToString()).FirstOrDefault();