簡體   English   中英

獲取“序列不包含任何元素”異常

[英]Getting “Sequence contains no elements” exception

我是.net框架的新手,它是nhibernate和iqueryable。

我有一個um_user_login_count表,其中有4列。 它們是id,login_ip,login_count和login_user_id。

這是我的UserLoginCount.cs

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Project.UserManagement" namespace="Project.UserManagement.Domain" schema="UserManagement">
  <class name="UserLoginCount" table="um_user_login_count">
    <id name="Id" column="id" generator="identity" />
    <property name="Ip" column="login_ip" length="255" />
    <property name="Count" column="login_count" length="255" />
    <property name="UserId" column="login_user_id" />
  </class>
</hibernate-mapping>

這是我的LoginCount.cs文件

namespace Project.UserManagement.Domain
{
    using System;
    using Iesi.Collections.Generic;
    using Project.ORM;

    public class UserLoginCount : UserManagementEntity<UserLoginCount>
    {
        public UserLoginCount() { }

        public virtual int Id { get; set; }
        public virtual string Ip { get; set; }
        public virtual string Count { get; set; }
        public virtual string UserId { get; set; }
    }
}

這是我在UMDataService代碼中聲明的內容

public static IQueryable<UserLoginCount> UserLoginCount
        {
            get
            {
                return DataServiceInstance.CurrentSession.Query<UserLoginCount>();
            }
        }

這里是我被稱為服務的代碼-

public string GetLoginInfo(string id)
        {
            UserLoginCount cnt = UMDataServices.UserLoginCount.Single();
            return cnt.Ip;
        }

但是我聽到一個錯誤,說“序列不包含任何元素”。 我絕對是新來的。 我不確定我是否正確地問了這個問題。

UMDataServices.UserLoginCount.Single()期望必須完全有 1個條目。 在您的情況下,沒有條目,並且按預期引發異常。

還有其他選項: SingleOrDefault (), First (), FirstOrDefault ,...

您可以根據需要選擇一個。

這行UserLoginCount cnt = UMDataServices.UserLoginCount.Single();

可能是罪魁禍首。 您可以將其更改為SingleOrDefault並檢查是否為空。

UserLoginCount cnt = UMDataServices.UserLoginCount.SingleOrDefault();
if(cnt != null) { /*do stuff */}

在以下情況下, Single會引發異常:

ArgumentNullException

  • source或謂詞為null。

出現InvalidOperationException

  • 沒有元素滿足謂詞的條件
  • 謂詞滿足一個以上的條件。
  • 源序列為空。

您可以使用SingleOrDefault阻止它。

 UserLoginCount cnt = UMDataServices.UserLoginCount.SingleOrDefault();
 string ip = null;
 if(cnt != null)
      ip = cnt.Ip;
 return ip;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM