linqtosql實體類
『壹』 LINQ執行存儲過程的結果問題
象你這樣的結構,首先,要生成一個表的實體類,如果你是自動加的LINQTOsql項目的話,在向導執行完的時候這個實體類應該自動生成了。否則就要自己動手生成。IQueryable<Users> abc = from bcf in the.Users where bcf.HasAd!="" select bcf;
foreach (Users s in abc)
{
Users b = s;
string c = b.HasAd;
}我這里的USER就是我的實體類,具體代碼如下,如果自己動手就按下面的代碼,LINQ語句不用我解釋了吧。[Table(Name="dbo.Users")]
public partial class Users : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _id;
private string _UserName;
private string _UserNameSpell;
private string _ManagerName;
private string _PassWord;
private System.Nullable<int> _UserLevel;
private System.Nullable<int> _UserJob;
private string _UserPopedom;
private string _Mob;
private string _Tel;
private System.Nullable<bool> _Sex;
private System.Nullable<int> _TheCount;
private System.Nullable<System.DateTime> _RegTime;
private string _RegIP;
private string _RegMAC;
private System.Nullable<System.DateTime> _LoginTime;
private string _LoginIP;
private string _LoginMAC;
private System.Nullable<System.DateTime> _LogoutTime;
private string _LogoutIP;
private string _LogoutMAC;
private System.Nullable<int> _TheState;
private string _HasAd;
private System.Nullable<int> _SendTimeType;
private System.Nullable<System.DateTime> _LastSendTime;
private System.Nullable<System.DateTime> _LastFinish;
private System.Nullable<byte> _MsgState;}這里只列出了欄位,而且是私有的,這象肯定不行,你或者把這些欄位改成公有,或者生成屬性
『貳』 LINQ to SQL 和一般的查詢語句怎麼什麼區別
linq是面向對象的sql。也就是說,sql是向關系型資料庫的查詢,而linq實際上是對內存里的數據的查詢。
雖然linq原來是對象查詢,但經過ms的努力,可以通過表達式分析與實體到關系的映射(linq
to
sql),把linq轉換為sql語句或是對xml的查詢(linq
to
xml)。
因此,這種技術就成了對象到資料庫記錄的一個方便的映射、轉化與操作的工具,你再也不必去去根據不同的情況用字元串拼接的辦法生成sql,而是專心於對象模型的處理即可,你對於對象的修改最終都會被轉換為對應的update,
insert,
delete等sql語句,在你submit時全部提交到資料庫中。
綜爾言之,linq
to
sql是一個資料庫到對象結構的一個中間層,
他把對關系數據的管理轉變為對象的操作,屏蔽了麻煩的sql,而且,還可以得到vs強大的智能感知功能的幫助。
『叄』 DBContext實例中,表實體對象是怎麼被加入的
系列的主角將一直是linqtosql.dbml,我們一般叫它數據對象關系映射,或者稱為ORM,簡單說就是資料庫與對象之間作一個關系,這種關系我們稱為Mapping,在LinqToSQL中,我們直接將某個資料庫對象托到DBML文件中,這種關系映射就形成了,也就是說,以後想操作資料庫直接操作DBML中的實體類型就可以了。
我們在使用某種ORM
『肆』 C#→關於System.Data.Linq下的Table<TEntity> 泛型類 的問題
Table<TEntity>表示表格記錄,它是一個泛型集合類,它的元素就是表格實體對象。它提供一組方法,對元素進行添加刪除操作,並可以通過DataContext將這些操作保存到資料庫。
表還是前面的那張表,在項目中添加了一個LINQ
to
SQL類。重點是InsertOnSubmit、DeleteOnSubmit等方法。
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
LINQ_to_SQL_Table
{
///
<summary>
///
操作單一表格的Table<TEntity>類
///
</summary>
class
Program
{static
void
Main(string[]
args){
//1.a.Attach附加實體
DataClasses1DataContext
dc1
=
new
DataClasses1DataContext();
tb_GuestInfo
guset
=
new
tb_GuestInfo()
{
Id=1,
Name
=
"DebugLZQ",
Age
=
35,
Tel
=
"138****8888"
};
dc1.tb_GuestInfo.Attach(guset);//這樣的Attach僅僅附加實體,資料庫沒有更新
dc1.SubmitChanges();
//顯示附加成功
foreach
(var
g
in
dc1.tb_GuestInfo)
{Console.WriteLine("{0}
{1}
{2}
{3}",
g.Id,
g.Name,
g.Age,
g.Tel);
}
Console.WriteLine("---------");
//顯示資料庫沒有更新
DataClasses1DataContext
dc2
=
new
DataClasses1DataContext();
foreach
(var
g
in
dc2.tb_GuestInfo)
{Console.WriteLine("{0}
{1}
{2}
{3}",
g.Id,
g.Name,
g.Age,
g.Tel);
}
Console.WriteLine("------------------------");
Console.ReadKey();
//2.InsertOnSubmit
dc2.tb_GuestInfo.InsertOnSubmit(guset);
dc2.SubmitChanges();
foreach
(var
g
in
dc2.tb_GuestInfo)
{Console.WriteLine("{0}
{1}
{2}
{3}",
g.Id,
g.Name,
g.Age,
g.Tel);
}
Console.WriteLine("------------------------");
Console.ReadKey();
//2b.InsertAllOnSubmit
插入集合
List<tb_GuestInfo>
lst
=
new
List<tb_GuestInfo>()
{new
tb_GuestInfo(){
Name="AA",
Age=25,Tel="133****3333"},new
tb_GuestInfo(){
Name="BB",
Age=25,Tel="135****5555"}
};
dc2.tb_GuestInfo.InsertAllOnSubmit(lst);
dc2.SubmitChanges();
foreach
(var
g
in
dc2.tb_GuestInfo)
{Console.WriteLine("{0}
{1}
{2}
{3}",
g.Id,
g.Name,
g.Age,
g.Tel);
}
Console.WriteLine("------------------------");
Console.ReadKey();
//
//3.DeleteOnSubmit
tb_GuestInfo
entity
=
(from
g
in
dc2.tb_GuestInfo
where
g.Name
==
"AA"
select
g).Single();
dc2.tb_GuestInfo.DeleteOnSubmit(entity);//
dc2.SubmitChanges();
foreach
(var
g
in
dc2.tb_GuestInfo)
{Console.WriteLine("{0}
{1}
{2}
{3}",
g.Id,
g.Name,
g.Age,
g.Tel);
}
Console.WriteLine("------------------------");
Console.ReadKey();
//3b.DeleteAllOnSubmit
IEnumerable<tb_GuestInfo>
entitys
=
from
g
in
dc2.tb_GuestInfowhere
g.Name
==
"AA"
||
g.Name
==
"BB"select
g;
dc2.tb_GuestInfo.DeleteAllOnSubmit(entitys);
dc2.SubmitChanges();
foreach
(var
g
in
dc2.tb_GuestInfo)
{Console.WriteLine("{0}
{1}
{2}
{3}",
g.Id,
g.Name,
g.Age,
g.Tel);
}
Console.WriteLine("------------------------");
Console.ReadKey();
}
}
}
程序運行結果如下:
『伍』 求助java中sql語句中in條件如何參數化
應該是EntityFramework(實體框架)、LinqToSQL或者Lamda表達式,關鍵是Linq。下面我給你點示例代碼你看是不是。public void LinqToSqlGroupBy04() { var q = from p in db.Procts group p by
『陸』 C# 實體框架(實體數據模型 ) 更新數據有類似SqlDataAdapter Fill的方法嗎
使用linqtosql 或者 EF 可以直接提交數據。savechange()
『柒』 linq to sql類怎麼用
打開VS2010新建控制台應用程序,然後添加LINQ
to
SQL
Class,命名為DbApp.dbml,新建dbml文件之後,可以打開server
explorer,建立資料庫連接,並將我們新建的表拖到dbml文件中,
2.
可以通過點擊dbml文件空白處,按F4顯示dbml屬性,可以修改Context和生成實體的命名空間
3.
到現在為止VS2010通過工具為我們創建好了數據表對應實體類和數據表操作添,改,刪的方法,現在開始實踐
『捌』 關於LINQforNwind的示例
給你一個LinqToEF 的例子吧 希望能幫到你
配置文件(連接字元串):
<connectionStrings>
<add name="TempConStr" connectionString="Data Source = Address;DataBase = Temp;User Id = ??;Password =?? " /> --這個是LinqToSql 的鏈接字元串
<add name="TempEntities" connectionString="metadata=res://*/Models.Temp.csdl|res://*/Models.Temp.ssdl|res://*/Models.Temp.msl;provider=System.Data.SqlClient;provider connection string="data source=Address;initial catalog=Temp;user id=??;Password = woshiwei1;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> --這個是LinqToEF 的鏈接字元串
--數據模型 --可以用VS 自動生成
using System;
using System.Data.Linq.Mapping;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Data.EntityClient;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Runtime.Serialization;
[assembly: EdmSchemaAttribute()]
#region EDM 關系源元數據
[assembly: EdmRelationshipAttribute("TempModel", "FK_Purchase_Customers", "Customer", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(SimpleMvc.Models.Customer), "Purchase", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(SimpleMvc.Models.Purchase), true)]
#endregion
namespace SimpleMvc.Models
{
#region 上下文
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
public partial class TempEntities1 : ObjectContext
{
#region 構造函數
/// <summary>
/// 請使用應用程序配置文件的「TempEntities1」部分中的連接字元串初始化新 TempEntities1 對象。
/// </summary>
public TempEntities1() : base("name=TempEntities1", "TempEntities1")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// 初始化新的 TempEntities1 對象。
/// </summary>
public TempEntities1(string connectionString) : base(connectionString, "TempEntities1")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// 初始化新的 TempEntities1 對象。
/// </summary>
public TempEntities1(EntityConnection connection) : base(connection, "TempEntities1")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
#endregion
#region 分部方法
partial void OnContextCreated();
#endregion
#region ObjectSet 屬性
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
public ObjectSet<Customer> Customer
{
get
{
if ((_Customer == null))
{
_Customer = base.CreateObjectSet<Customer>("Customer");
}
return _Customer;
}
}
private ObjectSet<Customer> _Customer;
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
public ObjectSet<Purchase> Purchase
{
get
{
if ((_Purchase == null))
{
_Purchase = base.CreateObjectSet<Purchase>("Purchase");
}
return _Purchase;
}
}
private ObjectSet<Purchase> _Purchase;
#endregion
#region AddTo 方法
/// <summary>
/// 用於向 Customer EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 ObjectSet<T> 屬性的 .Add 方法。
/// </summary>
public void AddToCustomer(Customer customer)
{
base.AddObject("Customer", customer);
}
/// <summary>
/// 用於向 Purchase EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 ObjectSet<T> 屬性的 .Add 方法。
/// </summary>
public void AddToPurchase(Purchase purchase)
{
base.AddObject("Purchase", purchase);
}
#endregion
}
#endregion
#region 實體
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="TempModel", Name="Customer")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
[Table]
public partial class Customer : EntityObject
{
#region 工廠方法
/// <summary>
/// 創建新的 Customer 對象。
/// </summary>
/// <param name="id">Id 屬性的初始值。</param>
/// <param name="name">Name 屬性的初始值。</param>
public static Customer CreateCustomer(global::System.Int32 id, global::System.String name)
{
Customer customer = new Customer();
customer.Id = id;
customer.Name = name;
return customer;
}
#endregion
#region 基元屬性
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
[Column]
public global::System.Int32 Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
private global::System.Int32 _Id;
partial void OnIdChanging(global::System.Int32 value);
partial void OnIdChanged();
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
[Column]
public global::System.String Name
{
get
{
return _Name;
}
set
{
OnNameChanging(value);
ReportPropertyChanging("Name");
_Name = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Name");
OnNameChanged();
}
}
private global::System.String _Name;
partial void OnNameChanging(global::System.String value);
partial void OnNameChanged();
#endregion
#region 導航屬性
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[("TempModel", "FK_Purchase_Customers", "Purchase")]
public EntityCollection<Purchase> Purchase
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Purchase>("TempModel.FK_Purchase_Customers", "Purchase");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Purchase>("TempModel.FK_Purchase_Customers", "Purchase", value);
}
}
}
#endregion
}
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="TempModel", Name="Purchase")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Purchase : EntityObject
{
#region 工廠方法
/// <summary>
/// 創建新的 Purchase 對象。
/// </summary>
/// <param name="id">Id 屬性的初始值。</param>
/// <param name="customerId">CustomerId 屬性的初始值。</param>
/// <param name="description">Description 屬性的初始值。</param>
/// <param name="price">Price 屬性的初始值。</param>
public static Purchase CreatePurchase(global::System.Int32 id, global::System.Int32 customerId, global::System.String description, global::System.Decimal price)
{
Purchase purchase = new Purchase();
purchase.Id = id;
purchase.CustomerId = customerId;
purchase.Description = description;
purchase.Price = price;
return purchase;
}
#endregion
#region 基元屬性
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
private global::System.Int32 _Id;
partial void OnIdChanging(global::System.Int32 value);
partial void OnIdChanged();
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 CustomerId
{
get
{
return _CustomerId;
}
set
{
OnCustomerIdChanging(value);
ReportPropertyChanging("CustomerId");
_CustomerId = StructuralObject.SetValidValue(value);
ReportPropertyChanged("CustomerId");
OnCustomerIdChanged();
}
}
private global::System.Int32 _CustomerId;
partial void OnCustomerIdChanging(global::System.Int32 value);
partial void OnCustomerIdChanged();
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String Description
{
get
{
return _Description;
}
set
{
OnDescriptionChanging(value);
ReportPropertyChanging("Description");
_Description = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Description");
OnDescriptionChanged();
}
}
private global::System.String _Description;
partial void OnDescriptionChanging(global::System.String value);
partial void OnDescriptionChanged();
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Decimal Price
{
get
{
return _Price;
}
set
{
OnPriceChanging(value);
ReportPropertyChanging("Price");
_Price = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Price");
OnPriceChanged();
}
}
private global::System.Decimal _Price;
partial void OnPriceChanging(global::System.Decimal value);
partial void OnPriceChanged();
#endregion
#region 導航屬性
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[("TempModel", "FK_Purchase_Customers", "Customer")]
public Customer Customer
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("TempModel.FK_Purchase_Customers", "Customer").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("TempModel.FK_Purchase_Customers", "Customer").Value = value;
}
}
/// <summary>
/// 沒有元數據文檔可用。
/// </summary>
[BrowsableAttribute(false)]
[DataMemberAttribute()]
public EntityReference<Customer> CustomerReference
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("TempModel.FK_Purchase_Customers", "Customer");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Customer>("TempModel.FK_Purchase_Customers", "Customer", value);
}
}
}
#endregion
}
--封裝強類型的 ObjectContext 用於操作對應的模型.
public class BaseDataContext : DataContext
{
public BaseDataContext(string fileOrServerOrConnection) : base(fileOrServerOrConnection)
{
}
public BaseDataContext(string fileOrServerOrConnection, MappingSource mapping)
: base(fileOrServerOrConnection, mapping)
{
}
public Table<Customer> Customers
{
get { return GetTable<Customer>(); }
}
public Table<Purchase> Purchases
{
get { return GetTable<Purchase>(); }
}
}
--這里是調用
var dataContext =
new BaseObjectContext(ConfigurationManager.ConnectionStrings["TempEntities"].ConnectionString);
var query = from c in dataContext.Customers
select new
{
c.Name,
Purchases = from p in dataContext.Purchases
where p.CustomerId == c.Id && p.Price > 1000
select new {p.Description, p.Price}
};
『玖』 怎麼寫關於「IN」操作符的SQL語句的參數化命令
根據你說的描述,應該是EntityFramework(實體框架)、LinqToSQL或者Lamda表達式,關鍵是Linq。下面我給你點示例代碼你看是不是。public void LinqToSqlGroupBy04() { var q = from p in db.Procts group p by p.CategoryID into g select new { g.Key, AveragePrice = g.Average(p => p.UnitPrice) }; ObjectDumper.Write(q, 1);}public void LinqToSqlWhere05() { var q = db.Procts.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued); ObjectDumper.Write(q, 0);}
『拾』 數據表關系比較多的資料庫 三層架構應該怎麼設計
實體類,也就是把資料庫表的欄位映射為你的對象的各個屬性如你A表有,id,name,password三個屬性你Model裡面新建Aclass給他ID,Name,Password三個屬性然後做和數據表欄位映射LINQTOSQL的時候就會自動讀取映射的欄位並轉換為實體類的屬性值