タグ付けされた質問 「linq-to-entities」

このタグは、LINQ to Entitiesに関する質問用です。つまり、ADO.NET Entity Frameworkを使用したLINQクエリです。これは、LINQ to SQLまたは他のLINQプロバイダーとは異なることに注意してください。

6
Entity Framework 4 Single()vs First()vs FirstOrDefault()
単一のアイテムをクエリするためのさまざまな方法の比較と、それぞれをいつ使用するかについて、時間の悪魔がいます。 誰かがこれらすべてを比較するリンクを持っていますか、またはなぜあなたが他のものを使うのかについての簡単な説明がありますか?私が知らないオペレーターがまだいますか? ありがとうございました。

14
EFでDateTimeの日付コンポーネントのみを比較する方法は?
2つの日付値があります。1つは既にデータベースに保存されており、もう1つはユーザーがDatePickerを使用して選択しました。ユースケースは、データベースから特定の日付を検索することです。 以前にデータベースに入力された値には常に12:00:00の時間コンポーネントがありますが、ピッカーから入力された日付には異なる時間コンポーネントがあります。 日付コンポーネントのみに関心があり、時間コンポーネントは無視したいと思います。 C#でこの比較を行う方法は何ですか? また、LINQでこれを行う方法は? 更新:LINQ to Entitiesでは、以下が正常に機能します。 e => DateTime.Compare(e.FirstDate.Value, SecondDate) >= 0

4
LINQ to Entitiesがメソッドを認識しない
linqクエリを実行しようとすると、次のエラーが発生します。 LINQ to Entitiesは 'Boolean IsCharityMatching(System.String、System.String)'メソッドを認識せず、このメソッドはストア式に変換できません。 私は以前の多くの質問を読んだことがありますが、人々が同じエラーを受け取る場合、これを正しく理解できれば、LINQ to Entitiesはlinqクエリ式全体をサーバークエリに変換する必要があるため、外部メソッドを呼び出すことができません初期化。シナリオをうまく機能させることができず、脳が溶け始めているので、誰かが私を正しい方向に向けてくれることを期待していました。私たちはEntity Frameworkと仕様パターンを使用しています(そして私は両方とも初めてです)。 仕様を使用するコードは次のとおりです。 ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference); charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList(); これがlinq式です。 public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied() { return p => p.IsCharityMatching(this.charityName, this.charityReference); } IsCharityMatchingメソッドは次のとおりです。 public bool IsCharityMatching(string name, string referenceNumber) { bool exists = true; if (!String.IsNullOrEmpty(name)) { if …



13
データベーステーブルの列にリストを格納する方法
だから、あたりに関連する質問への答えMehrdad、私はそれを得る「適切な」データベース表の列がリストを格納していないこと。むしろ、上記のリストの要素を効果的に保持する別のテーブルを作成してから、直接または結合テーブルを介してそれにリンクする必要があります。ただし、作成するリストのタイプは、一意のアイテムで構成されます(リンクされた質問のフルーツとは異なります)例)。さらに、リスト内の項目は明示的に並べ替えられています。つまり、要素を別のテーブルに保存した場合、アクセスするたびに並べ替える必要があります。最後に、リストは基本的にアトミックです。リストにアクセスしたいときはいつでも、リストの一部ではなくリスト全体にアクセスしたいので、データベースクエリを発行して複数のリストを集めるのはばかげているようです。リスト。 AKXのソリューション(上記にリンク)は、リストをシリアル化してバイナリ列に格納することです。しかし、シリアル化と逆シリアル化について心配する必要があることを意味するため、これも不便に思われます。 より良い解決策はありますか?より良い解決策がない場合、なぜですか?この問題は時々発生するようです。 ...私がどこから来たのかを知らせるためのもう少しの情報。SQLとデータベースの一般的な理解を始めた直後に、LINQ to SQLに切り替えられました。オブジェクトがどのように動作するかを考えずにプログラミングオブジェクトモデルを扱うことを期待しているので、今は少し甘やかされています。照会またはデータベースに格納されます。 皆さんありがとう! ジョン 更新:それで、私が得ている最初の一連の答えで、「CSV / XMLルートに行くことはできますが、しないでください!」と表示されます。だから今私はその理由の説明を探しています。いくつかの良い参考文献を教えてください。 また、私が今何をしているのかをよりよく理解するために:私のデータベースには、(x、y)ペアのリストを持つFunctionテーブルがあります。(この表には、説明に影響しない他の情報も含まれます。)(x、y)ペアのリストの一部を見る必要はありません。むしろ、私はそれらすべてを取り、画面上にプロットします。ユーザーがノードをドラッグして値を変更したり、プロットに値を追加したりできるようにします。

10
指定された型メンバー 'Date'はLINQ to Entities Exceptionではサポートされていません
次のステートメントの実装中に例外が発生しました。 DateTime result; if (!DateTime.TryParse(rule.data, out result)) return jobdescriptions; if (result < new DateTime(1754, 1, 1)) // sql can't handle dates before 1-1-1753 return jobdescriptions; return jobdescriptions.Where(j => j.JobDeadline.Date == Convert.ToDateTime(rule.data).Date ); 例外 The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and …

8
タイプまたは名前空間名「Objects」は名前空間「System.Data」に存在しません
エンティティ、C#、およびSQL Serverを使用して、n層アプリを作成しています。すべてのDALコンポーネントに共通の基本クラスをいくつか作成しています。この基本クラスでは、エンティティオブジェクトによって継承されたObjectContext基本クラスの接続状態を処理します。 コンパイルすると、次のエラーがスローされます。 タイプまたは名前空間名「Objects」が名前空間「System.Data」に存在しません(アセンブリ参照がありませんか?) また、usingステートメントSystem.Data.Objectsも同じ理由で解決されません。 アセンブリを参照として追加しようとしましたが、アセンブリ参照の[.NET]タブにそれが見つかりませんでした。 何かご意見は?ありがとう!

10
C#-プロパティ名を文字列として使用してプロパティで並べ替えるコード
プロパティ名を文字列として持っている場合、C#でプロパティに対してコーディングする最も簡単な方法は何ですか?たとえば、ユーザーが選択したプロパティで検索結果を並べ替えることができるようにしたい(LINQを使用)。もちろん、文字列値として、UIの「orderby」プロパティを選択します。文字列をプロパティにマップするために条件付きロジック(if / else、switch)を使用せずに、その文字列をlinqクエリのプロパティとして直接使用する方法はありますか?反射? 論理的には、これが私がやりたいことです。 query = query.OrderBy(x => x."ProductId"); 更新:元々、Linq to Entitiesを使用していることを指定していませんでした-リフレクション(少なくともGetProperty、GetValueアプローチ)はL2Eに変換されないようです。

9
Entity Frameworkのオペレーターのようですか?
Entity Frameworkで文字列フィールドを持つエンティティの「LIKE」演算子を実装しようとしていますが、サポートされていないようです。他の誰かがこのようなことをしようとしましたか? このブログ投稿は私たちが抱えている問題を要約しています。containsを使用することもできますが、これはLIKEの最も些細なケースにのみ一致します。contains、startswith、endswith、indexofを組み合わせるとアクセスできますが、標準のワイルドカードとLinq to Entitiesコード間の変換が必要です。

1
メソッドをストア式に変換できません
このコードがLINQ to SQLで機能するのを見ましたが、Entity Frameworkを使用すると、次のエラーがスローされます。 LINQ to Entitiesはメソッド 'System.Linq.IQueryable'1 [MyProject.Models.CommunityFeatures] GetCommunityFeatures()'メソッドを認識せず、このメソッドはストア式に変換できません。` リポジトリコードはこれです: public IQueryable<Models.Estate> GetEstates() { return from e in entity.Estates let AllCommFeat = GetCommunityFeatures() let AllHomeFeat = GetHomeFeatures() select new Models.Estate { EstateId = e.EstateId, AllHomeFeatures = new LazyList<HomeFeatures>(AllHomeFeat), AllCommunityFeatures = new LazyList<CommunityFeatures>(AllCommFeat) }; } public IQueryable<Models.CommunityFeatures> GetCommunityFeatures() { return …

3
LINQ to Entitiesは、メソッド 'System.String Format(System.String、System.Object、System.Object)'を認識しません
私はこのlinqクエリを持っています: private void GetReceivedInvoiceTasks(User user, List<Task> tasks) { var areaIds = user.Areas.Select(x => x.AreaId).ToArray(); var taskList = from i in _db.Invoices join a in _db.Areas on i.AreaId equals a.AreaId where i.Status == InvoiceStatuses.Received && areaIds.Contains(a.AreaId) select new Task { LinkText = string.Format(Invoice {0} has been received from {1}, i.InvoiceNumber, i.Organisation.Name), …

10
Linq to Entitiesを使用した「Contains()」回避策?
Silverlight ADO.Net Data ServicesクライアントAPI(したがって、Linq To Entities)を使用して、where句のIDのリストを使用するクエリを作成しようとしています。誰かがサポートされていないContainsの回避策を知っていますか? 私はこのようなことをしたい: List<long?> txnIds = new List<long?>(); // Fill list var q = from t in svc.OpenTransaction where txnIds.Contains(t.OpenTransactionId) select t; これを試しました: var q = from t in svc.OpenTransaction where txnIds.Any<long>(tt => tt == t.OpenTransactionId) select t; しかし、「メソッド 'Any'はサポートされていません」というメッセージが表示されました。


6
Linq to Entityで最大IDを取得するにはどうすればよいですか?
ID列を持つテーブルUserがありUserIDますが、最大値を返す正しいLinq to Entityコード行はUserID何ですか? 私はもう試した: using (MyDBEntities db = new MyDBEntities()) { var User = db.Users.Last(); // or var User = db.Users.Max(); return user.UserID; } しかしLast、Maxサポートされていないようです。 何か案は?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.