سلام وقتی کویری به صورت همه ستون ها هست اخطاری نداریم
var query = database.Database.SqlQuery<Vw_Users>("Select * From Vw_Users ");
حالا من نمیخوام همه ستون هارو انتخاب کنم وقتی همه ستون هارو انتخاب نمیکنم اخطار میده
این سلکت رو چطوری بزنم که فقط ستون های مدنظر من رو بیار
مثلا
var query = database.Database.SqlQuery<Vw_Users>("Select UserID,UserName From Vw_Users");
الان من فقط میخوام دوتا ستون رو برگردونه که در این حالت اخطار میده
متن خطا
System.Data.Entity.Core.EntityCommandExecutionException: The data reader is incompatible with the specified 'TestSystemDBModel.ViewUser'. A member of the type, 'UserPassword', does not have a corresponding column in the data reader with the same name.
at System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.GetMemberOrdinalFromReader(DbDataReader storeDataReader, EdmMember member, EdmType currentType, Dictionary`2 renameList)
at System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.GetColumnMapsForType(DbDataReader storeDataReader, EdmType edmType, Dictionary`2 renameList)
at System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.CreateColumnMapFromReaderAndType(DbDataReader storeDataReader, EdmType edmType, EntitySet entitySet, Dictionary`2 renameList)
at System.Data.Entity.Core.Objects.ObjectContext.InternalTranslate[TElement](DbDataReader reader, String entitySetName, MergeOption mergeOption, Boolean streaming, EntitySet& entitySet, TypeUsage& edmType)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)
at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)
at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass14`1.<ExecuteSqlQuery>b__13()
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at TestSystem.windows.Win_User.ShowUserInfo(Func`1 SearchStringForUsers) in E:\Kaneh\Test Amozesh\C#\TestSystem\TestSystem\TestSystem\TestSystem\windows\Win_User.xaml.cs:line 57
الان من از کل ستون های ویو ستون UserPassword رو انتخاب نکردم
اگه این ستون رو هم تو سلکت بیارم درست میشه و خطایی نداره
الان من یه ویو دارم و میخوام از اون ویو یه سلکتی بزن که چند تا از ستون هارو باهم ترکیب کنم و یه ستونشون نمایش بدم
درحال حاضر چون نتونستم تو سی شارپ اون سلکت رو اجرا کنم مجبور شدم یه ویو جدید بزنم و این کار درست نیست خودش یه نوع افزونگی هستش الان شما در نظر داشته باشید من از همین ویو یوزر همچین سلکتی رو میخوام بگیرم (به عنوان مثال)
و این کار رو فقط یه جا نیاز دارم
درست من برم برای این یه ویو از ویو قبلی بگیرم ؟
با این نوع تونستم فقط ستون های مد نظرم رو بگیرم
var query = (from x in database.Vw_Users Select new {x.UserID , x.UserName});
ولی سلکتی که توو عکس بالا میبینید نشد
این سلکت رو نتونستم اجرا کنم ؟
SELECT UserID,UserName+'-'+ UserFamily+'-'+ UserTel+'-' As Takmili FROM Vw_Users
خب خطا چی هست؟
شما هیچ اشاره ای به خطا نکردید
لطفا سوال رو ویرایش کنید و خطا رو هم در انتها بنویسید
سلام. این نوع سلکت که زدید مناسب اون خواسته ای که دارید نیست. از این حالت زمانی استفاده کنید که میخواهید کل ستون های یک ویو را انتخاب کنید. برای رفع این مشکل از روش زیر استفاده کنید.
var query = (from x in database.Vw_Users Select new {x.UserID , x.UserName});
داخل { } هر ستونی رو که خواستید داخل کوئری بیاد مثل نمونه بالا قرار بدید.
شما توی کوئری خودتون از DataReader استفاده کردید. در DataReader شما که فیلدهای رو از Vw_Customer میگیره فیلدهایی وجود داره که در Select شما وجود نداره. برای این حالت باید به جای استفاده از Select به روش DataReader از دستورات EF استفاده کنید.
var query = (from u1 in database.Vw_user select new { u1.firstname, u1.family}).ToList();
به این ترتیب دیگه از قبل یک DataReader شامل اطلاعات و فیلدهای از قبل مشخص ایجاد نمی کنید و به راحتی میتونید کوئری خودتون رو اجرا کنید
برای اینکه بتونید دو ستون یا بیشتر رو با هم ترکیب کنید از روش زیر استفاده کنید.
var query = (from x in database.Vw_Users Select new {x.UserID , x.UserName , Takmili = x.UserFamily +'-'+ x.UserTel});
ممنون از دوستان
لطف کردین وقت گذاشتین
راستی سایت چرا اجازه نداد من دیروز پاسخ بدم به نظر دوستان
هرکی جواب میداد باید میرفتم سوال رو ویرایش میکردم ؟
اگه بخوایم هرسلکتی که تو اسکیوال میزنیم و جواب میده رو تو سی شارپ بزنیم چیکار باید کرد
الان میخوام همچین سلکتی رو بزم که توش از توابع اسکیوال و ... استفاده کردم باید به چه شکلی بزنم
select Users, City ,SUM(Time) as IdTime , count(Id) as IDcount
from ViewUTime
where 1=1
GROUP BY Users, City
از نرم افزار Linqer 4.6 استفاده کن
عالی بود مرسی
کلی کارمو راحت کردین مرسی
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1172
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
617
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
373
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
335
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4294
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4299
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3898
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
686
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3192
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3259
- پاسخ :
1
|
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1400/07/17
- ساعت :
10:39:00 PM
- بازدید :
2335
- پاسخ :
0
|
تاریخ :
1403/09/05
- ساعت :
06:32:00 PM
- بازدید :
70
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
149
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
473
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
948
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1378
- پاسخ :
1
|