Asp.Net MVC 4 Empty Proje Sorunu

Asp.Net MVC 4 Empty Proje Sorunu

* Razor’u tanımama durumu sorunu:

System.Core ve Microsoft.CSharp referance dll versiyonları uyuşmadığından dolayı oluşan hatadır. Çözümü web.config dosyasına

<system.web>
<compilation debug="true" targetFramework="4.5">
  <assemblies>
	<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
	<add assembly="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>
</system.web>

 

* An exception of type ‘System.IO.FileLoadException’ occurred in System.Web.Optimization.dll but was not handled in user code sorunu system.Web.Optimization dll’in gerekli gördüğü WebGrease dll ile versiyon uyuşmaması sorunudur. Belirtilen dll nuget consolende yüklenmelidir.

Install-Package WebGrease -Version 1.5.2

 

Youtube

Youtube’dan video ve mp3 indirmek için adres satırındaki youtube.com domaini ssyoutube.com olarak değiştirip, saveform.net sayfasına yönlenip indirme işlemini plugin yüklemeden gerçekleştirebilirsiniz.

 

http://www.youtube.com/watch?v=xxxxxx

http://www.ssyoutube.com/watch?v=xxxxxx

nRF24L01 Arduino Bağlantısı

nRF24L01 haberleşme için SPI kullanmaktadır. Bu yüzden Arduino’nun (uno) SPI için ayrılmış portları 11 – 12 – 13 numaralı dijital pinlerini kullanılıyoruz.

Arduino için yazılmış içinde örnekleri bulunan kütüphaneyi buradan indirebilirsiniz. nRF24L01p

Arduino SPI Port açılımı

MOSI -> 11
MISO -> 12
SCK ->13
SS(Slave) ->10

nRF24L01 bağlayacağım Arduino Pin numaraları

CSN -> 7
CE -> 8
MOSI ->11
MISO ->12
SCK ->13
VCC -> 3.3 V
GND -> GND
IRQ ->Boşta

GND: Ground.
VCC: 3.3V.
CE: Chip (RX/TX) Enable, high active. If high, module is either sending or listening.
CSN: Chip Select Not, low active. If low, the chip responds to SPI commands. This is actually the ‘real’ chip select signal, and is easily confusing with CE which enables/disables the transceiver radio part.
SCK: SPI Shift Clock, up to 10 MHz.
MOSI: Master-Out-Slave-In, used to shift data from the microcontroller to the device.
MISO: Master-In-Slave-Out, used to shift data from the device to the microcontroller.
IRQ: Optional Interrupt Request pin. Signals RX/TX status like packet sent or received.

 

Örneği açtığınızda string -> PTX, PRX olarak 2 tane örnek mevcuttur.

TX gönderici, Rx alıcı örneğidir. Çift yönlü haberleşme yaptığından kendinize özel kodu gönderici ve alıcı olarak tek arduino da kullabilirisiniz.

Notlarım:

Channel ve RXAddress göndericide ve alıcıda aynı olması gerekiyor.
Örnek kodlar tek yönlü haberleşme için temel seviye kodlardır

Alıcı Kodları:

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p receiver(7,8);//CSN,CE

void setup(){
  delay(150);
  Serial.begin(9600);
  Serial.println("RX baglanti saglandi"); 
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  receiver.channel(90);
  receiver.RXaddress("Artur");
  receiver.init();
}

String message;

void loop(){ 
  if(receiver.available()){
    receiver.read();
    receiver.rxPL(message);
    if(message.length()>0)
    {
      Serial.println(message);
      message="";
    }
  }
}

 Gönderici:

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p transmitter(7,8);//CSN,CE

void setup(){
  delay(150);
  Serial.begin(9600);
  Serial.println("TX baglanti saglandi"); 
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  transmitter.channel(90);
  transmitter.TXaddress("Artur");
  transmitter.init();
}

String message;

void loop(){
  if(Serial.available()>0){
    char character=Serial.read();
    //Serial.println(character);
    if(character=='g'){
      
      transmitter.txPL(message);
      boolean  state = transmitter.send(SLOW);
      Serial.print("Mesaj : '");
      Serial.print(message);
      if(state==true)
        Serial.println("' gonderildi");
      else
        Serial.println("' gonderilemedi");
        
      message="";
    }else{
      message+=character;
    }
  }
}

 

Kaynaklar:
nRF24L01 ait ek dökümantasyon nrf24l01_tutorial_0
Tutorial: Ultra Low Cost 2.4 GHz Wireless Transceiver with the FRDM Board
http://www.arduist.com/arduino-ile-nrf24l01-kullanimi/

Linq to Sql Dinamik Tablo Kullanımı

Veritabanınızda belli bir düzene göre aynı özelliklere sahip tablolarınız varsa bu yöntemi kullanabilirsiniz. Böylelikle değişken tablo yapısında işinizi çok kolaylaştıracaktır.

Neden böyle bir duruma ihtiyaç duydum?

Firmamda logo muhasebe programına entegrasyon sağlamaktayım. Logo veritabanında her seneye ait aynı özellikte tablolar bulunmaktadır. Örneğin “LG_XXX_tabloIsmi” tablo isminde her yıl “XXX” alanı değişmektedir. Böylelikle her yıl için metot yazmak mantıksız olmaktadır.

Nasıl Yaparım?

  • Türetilecek veritabanı tablolarını kullanacağınız .dbml dosyasına ekleyiniz.  (eklenen tabloların ismini değiştirmek için xml dosyasını yaratacağız)
  • Visual Studio Command Prompt ‘u açıyoruz ve yarattığımız .dbml dosyasını path’ini veriyoruz.
  • sqlmetal /Map: c:\person.xml /code c:\person.dbml (dosya pathlerinin doğru yazdığınıza emin olunuz.)
  • Person.xml dosyasını projemize dahil ediyoruz.
  • Person.xml Properties -> Build Action “Content” olan seçeneği “Embedded Resource” yapınız
  • Datacontext çağıracağınız zaman aşağıda ki code bloğunu kullanınız.

 

public static LogoDbClassesDataContext GetDataContext(int Year)
{
	if ((Temp_Year != Year) || (Temp_source == null))
	{
		Temp_Year = Year;
		string FirmNo;
		ConnectionString = ConfigurationManager.ConnectionStrings["namespace.LOGOConnectionString"].ConnectionString;

		int tmp = GetLogoCompanyCode(Year); // yıla ait Firma kodunu bulun
		if (tmp != 0)
			FirmNo = tmp.ToString();
		else
			return null;


		Stream ioSt = Assembly.GetExecutingAssembly().GetManifestResourceStream("namespace.LogoDbXML.xml");
		XElement xe = XElement.Load(XmlReader.Create(ioSt));
		var tableElements = xe.Elements().AsQueryable().Where(e => e.Name.LocalName.Equals("Table"));
		foreach (var t in tableElements)
		{
			var nameAttribute = t.Attributes().Where(a => a.Name.LocalName.Equals("Name"));
			foreach (var a in nameAttribute)
			{
				if (a.Value.Equals("dbo.LG_999_INVOICE_01"))
					a.Value = a.Value.Replace("999", FirmNo);
			}
		}
		XmlMappingSource source = XmlMappingSource.FromXml(xe.ToString());
		Temp_source = source;
	}
	return new LogoDbClassesDataContext(ConnectionString, Temp_source);
}
LogoDbClassesDataContext tmp_Context = GetDataContext(Year)

 

Kaynak:
http://social.msdn.microsoft.com/Forums/en-US/f5e0af64-0057-4498-998b-70db656a0e9f/linq-to-sql-using-dynamic-tables

Bölüm Seçimi ve Bilgisayar Mühendisliği

Hangi Fakülteyi okumalısın?
Okuyacağın bölüm sonrası kazanacağın unvan ile iş hayatına atıldığında, sıkılmadan çalışabileceğin ve maddi olarak tatmin edecek bir bölüm okumanı tavsiye ederim. Kendimden örnek vermek gerekirse şuan hobimi mesleğim olarak yapıyorum. Bu yüzden işimde başarı kazanıyorum. Tavsiye olarak sağlık sektörü veya İngilizce mühendislik-mimarlık fakültesidir. Eğer köklü üniversiteleri kazanabilirsen tadından yenmez. Fakat sırf iyi üniversite diye istemediğin bölümü de kesinlikle okuma.

Ne tür donanım olması gerekiyor ?
hangi bölümü okursan oku yeniliklere ayak uydurabilmek için okuman ve araştırman gerekiyor. Bunun için en büyük donanımın İngilizce bilmendir. Hayat sadece derslerden ibaret olmadığından sosyal olmalısın, kendini rahatça ifade etmelisin.

Mesleğin olumlu ve olumsuz yönleri ?
Mesleğim hızlı bir gelişim içindedir. Kısa süre içinde çok fazla problemi çözmem gerekiyor. Kimi zaman gözden kaçan kod için saatlerini verebiliyorsun. Her şeye rağmen insanların problemine çözüm bulmak çok keyif vericidir.

Çalışma saatleri ?
İş saatimiz 08:00 – 18:00 olmasına rağmen işleri yetiştirmek için akşamları çalışmak zorunda kalıyorsun. Ayrıca sistem güncellemelerinde kullanıcılar minimum etkilenmesi için geceleri çalışmak zorundasın. Her şeye rağmen kafanda hep bir problem ve o problemleri çözmek için her zaman her yerde düşünüyorsun.

Tavsiye eder misin?
Saatlerce bilgisayarın başından çalışabileceksen, devamlı yeni teknoloji öğrenip uygulamalarında kullanabileceğini düşünüyorsan kesinlikle tavsiye ederim.

EK
Kişisel gelişimini en iyi şekilde yapabileceğin ve sosyalleşebileceğin şehirde okumalısın.

Umarım yardımcı olmuşumdur.

Devexpress Grid Örneği

<dx:ASPxGridView ID="gvCardStationOperator" ClientInstanceName="gvCardStationOperator"
	runat="server" Width="100%" KeyFieldName="RuleID" OnDataBinding="gvCardStationOperator_DataBinding"
	AutoGenerateColumns="false" EnableTheming="false" ClientVisible="false" OnHtmlEditFormCreated="gvCardStationOperator_HtmlEditFormCreated"
	OnRowDeleting="gvCardStationOperator_RowDeleting" OnRowInserting="gvCardStationOperator_RowInserting"
	OnRowUpdating="gvCardStationOperator_RowUpdating">
	<Columns>
		<dx:GridViewDataColumn FieldName="LocationID" Visible="false" />
		<dx:GridViewDataColumn FieldName="StationID" Visible="false" />
		<dx:GridViewDataColumn FieldName="intValue1" Visible="false" />
		<dx:GridViewDataColumn FieldName="intValue2" Visible="false" />
		<dx:GridViewDataColumn FieldName="LocationName" Width="100px" Caption="Lokasyon"
			GroupIndex="0" />
		<dx:GridViewDataColumn FieldName="StationName" Width="100px" Caption="İstasyon İsmi" />
		<dx:GridViewDataColumn FieldName="NameSurname" Width="250px" Caption="Yetkili Kişi" />
		<dx:GridViewCommandColumn ButtonType="Image" Width="30px" Caption="Sil">
			<DeleteButton Text="Sil" Visible="True">
				<Image Url="~/images/ButtonImages/delete.png" Width="20px">
				</Image>
			</DeleteButton>
		</dx:GridViewCommandColumn>
	</Columns>
	<Templates>
		<TitlePanel>
			<table width="100%">
				<tr>
					<td align="left">
						Kart Bakiyesi Düşecek Personeller
					</td>
					<td align="right">
						<dx:ASPxButton runat="server" ID="btnNewPrice" ClientInstanceName="btnNewPrice" EnableTheming="False"
							EnableDefaultAppearance="False" AutoPostBack="False" ToolTip="Yeni Bölge Ekle"
							Style="cursor: pointer;" UseSubmitBehavior="false">
							<Image Width="22px" Height="22px" Url="~/images/ButtonImages/add.png" />
							<ClientSideEvents Click="function(s, e) {
											gvCardStationOperator.AddNewRow();
											}" />
						</dx:ASPxButton>
					</td>
				</tr>
			</table>
		</TitlePanel>
		<EditForm>
			<table style="width: 350px; padding: 15px">
				<tr>
					<td style="width: 120px;">
						<dx:ASPxLabel ID="lblLocation" runat="server" Text="Lokasyon" Width="100px" />
					</td>
					<td style="width: 220px;">
						<dx:ASPxComboBox ID="cbLocation" ClientInstanceName="cbLocation" runat="server" ValueType="System.Int32"
							EnableTheming="false">
							<ClientSideEvents SelectedIndexChanged="ChangedLocation" />
							<ValidationSettings RequiredField-IsRequired="true" RequiredField-ErrorText="Bu alan boş bırakılamaz!"
								ValidationGroup="ValidationAction" ErrorDisplayMode="ImageWithTooltip" />
						</dx:ASPxComboBox>
					</td>
				</tr>
				<tr>
					<td>
						<dx:ASPxLabel ID="ASPxLabel1" runat="server" Text="İstasyon" Width="100px" />
					</td>
					<td>
						<dx:ASPxComboBox ID="cbStation" ClientInstanceName="cbStation" runat="server" ValueType="System.Int32"
							EnableTheming="false" OnCallback="cbStation_Callback">
							<ValidationSettings RequiredField-IsRequired="true" RequiredField-ErrorText="Bu alan boş bırakılamaz!"
								ValidationGroup="ValidationAction" ErrorDisplayMode="ImageWithTooltip" />
						</dx:ASPxComboBox>
					</td>
				</tr>
				<tr>
					<td>
						<dx:ASPxLabel ID="ASPxLabel2" runat="server" Text="Kullanıcı" Width="100px" />
					</td>
					<td>
						<dx:ASPxComboBox ID="CbUserName" runat="server" ClientInstanceName="CbUserName" FilterMinLength="3"
							IncrementalFilteringMode="Contains" ValueType="System.Int32" ValueField="UserID"
							EnableCallbackMode="true" TextFormatString="{1}" CallbackPageSize="10" OnItemsRequestedByFilterCondition="CbUserName_OnItemsRequestedByFilterCondition_SQL"
							OnItemRequestedByValue="CbUserName_OnItemRequestedByValue_SQL" Width="300px"
							DropDownStyle="DropDown">
							<Columns>
								<dx:ListBoxColumn FieldName="UserID" Caption="ID" Width="0px" />
								<dx:ListBoxColumn FieldName="NameSurname" Caption="İsmi" />
								<dx:ListBoxColumn FieldName="Department" Caption="Departmanı" />
								<dx:ListBoxColumn FieldName="Title" Caption="Ünvanı" />
							</Columns>
							<ValidationSettings RequiredField-IsRequired="true" RequiredField-ErrorText="Bu alan boş bırakılamaz!"
								ValidationGroup="ValidationAction" ErrorDisplayMode="ImageWithTooltip" />
						</dx:ASPxComboBox>
					</td>
				</tr>
			</table>
			<center><table style="padding: 15px">
				<tr>
					<td>
						<dx:ASPxButton runat="server" ID="btnCloseOperator" ClientInstanceName="btnCloseOperator"
							AutoPostBack="false" Width="75px" Text="İptal">
							<ClientSideEvents Click="function(e,s){
										 gvCardStationOperator.CancelEdit();
							}" />
						</dx:ASPxButton>
					</td>
					<td>
						<dx:ASPxButton runat="server" ID="btnSaveOperator" ClientInstanceName="btnSaveOperator"
							AutoPostBack="false" Width="75px">
							<ClientSideEvents Click="function(e,s){
									if(ASPxClientEdit.ValidateGroup('ValidationAction'))
									{ 
										gvCardStationOperator.UpdateEdit();
									}
							}" />
						</dx:ASPxButton>
					</td>
				</tr>
			</table></center>
		</EditForm>
	</Templates>
	<Styles>
		<AlternatingRow Enabled="true" BackColor="WhiteSmoke">
		</AlternatingRow>
	</Styles>
	<Settings ShowFooter="True" />
	<SettingsPager PageSize="20" />
	<SettingsLoadingPanel Mode="Disabled" />
	<Settings ShowTitlePanel="True" ShowGroupPanel="True" />
	<SettingsBehavior ConfirmDelete="true" />
	<SettingsEditing Mode="PopupEditForm" EditFormColumnCount="1" />
	<SettingsPopup>
		<EditForm HorizontalAlign="WindowCenter" VerticalAlign="WindowCenter" />
	</SettingsPopup>
	<SettingsText PopupEditFormCaption="Operatör Ekle / Düzenle" ConfirmDelete="Operatörü silmeyi onaylıyor musunuz?" />
	<ClientSideEvents RowDblClick="function(s,e){ 
						gvCardStationOperator.StartEditRow(e.visibleIndex);
						gvCardStationOperator.SelectRow(e.visibleIndex,true);}" BeginCallback="function(s, e) { LoadingPanel.Show(); }"
		EndCallback="function (s, e) { 
						LoadingPanel.Hide();  
						if(gvCardStationOperator.cpOpenPopUp)
						{
							pUpInfo.Show();
							lblMessage.SetText(gvCardStationOperator.cpMessage);
							gvCardStationOperator.cpOpenPopUp=false;
						}
			  }" />
</dx:ASPxGridView>

 

protected void gvCardStationOperator_DataBinding(object sender, EventArgs e)
{
	if (Page.IsCallback || gvCardStationOperator.IsCallback)
	{
		if (Session["uc_CardRules"] != null)
			gvCardStationOperator.DataSource = Session["uc_CardRules"] as List<CardRule>;
		else
		{
			List<CardRule> _CardRule = new List<CardRule>();
			List<Filter> _FilterList = new List<Filter>();
			Filter _Filter = new Filter();
			_Filter.FieldName = "CardApp";
			_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
			_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
			_Filter.FilterIntValue = _CardApp;
			_FilterList.Add(_Filter);
			_Filter = new Filter();
			_Filter.FieldName = "Rule";
			_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
			_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
			_Filter.FilterIntValue = Convert.ToInt32(EnumsCardRule.CardStationOperator);
			_FilterList.Add(_Filter);
			var tmp = ucProxy.ObjectManager.GetCardRules(_FilterList.ToArray());
			if (tmp != null)
				_CardRule = tmp.ToList();

			Session["uc_CardRules"] = _CardRule;
			gvCardStationOperator.DataSource = _CardRule;
		}
	}
}
protected void gvCardStationOperator_HtmlEditFormCreated(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditFormEventArgs e)
{
	ASPxButton btnSave = (ASPxButton)gvCardStationOperator.FindEditFormTemplateControl("btnSaveOperator");
	ASPxComboBox cbLocation = (ASPxComboBox)gvCardStationOperator.FindEditFormTemplateControl("cbLocation");
	ASPxComboBox cbStation = (ASPxComboBox)gvCardStationOperator.FindEditFormTemplateControl("cbStation");
	ASPxComboBox cbUserName = (ASPxComboBox)gvCardStationOperator.FindEditFormTemplateControl("CbUserName");

	List<CardLocationObject> CardLocations = new List<CardLocationObject>();
	if (Session["uc_CardLocation"] == null)
	{
		List<Filter> _FilterList = new List<Filter>();
		Filter _Filter = new Filter();
		_Filter.FieldName = "CardApp";
		_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
		_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
		_Filter.FilterIntValue = _CardApp;
		_FilterList.Add(_Filter);
		_Filter = new Filter();
		_Filter.FieldName = "State";
		_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
		_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
		_Filter.FilterIntValue = Convert.ToInt32(EnumsCardState.Active);
		_FilterList.Add(_Filter);
		_Filter = new Filter();
		_Filter.FieldName = "ReduceBalance";
		_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
		_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
		_Filter.FilterIntValue = 0;
		_FilterList.Add(_Filter);

		var tmp = ucProxy.ObjectManager.GetCardLocations(_FilterList.ToArray());
		if (tmp != null)
			Session["uc_CardLocation"] = tmp.ToList();
		else
			Session["uc_CardLocation"] = new List<CardLocationObject>();
	}

	CardLocations = (List<CardLocationObject>)Session["uc_CardLocation"];
	foreach (CardLocationObject item in CardLocations)
	{
		cbLocation.Items.Add(item.LocationName, item.LocationID);
	}

	if (gvCardStationOperator.EditingRowVisibleIndex >= 0)
	{
		btnSave.Text = "Güncelle";
		CardRule _CardRule = (CardRule)gvCardStationOperator.GetRow(gvCardStationOperator.EditingRowVisibleIndex);
		FillStation(cbStation, _CardRule.LocationID);
		cbLocation.Items.FindByValue(_CardRule.LocationID).Selected = true;
		cbStation.Items.FindByValue(_CardRule.StationID).Selected = true;
		cbUserName.Items.Add(_CardRule.NameSurname, _CardRule.intValue2);
		cbUserName.SelectedIndex = 0;
	}
	else
		btnSave.Text = "Kaydet";
}
protected void gvCardStationOperator_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
	e.Cancel = true;
	DeleteOfflineAction(Convert.ToInt32(e.Keys[0]));
	gvCardStationOperator.CancelEdit();
}
protected void gvCardStationOperator_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
	ASPxGridView gridView = (ASPxGridView)sender;
	e.Cancel = true;
	SaveUpdateCardStationOperator(gridView);
	gridView.CancelEdit();
}
protected void gvCardStationOperator_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
	ASPxGridView gridView = (ASPxGridView)sender;
	e.Cancel = true;
	SaveUpdateCardStationOperator(gridView);
	gridView.CancelEdit();
}
protected void cbStation_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
	if (e.Parameter != null)
	{
		ASPxComboBox Combobox = (ASPxComboBox)sender;
		FillStation(Combobox, Convert.ToInt32(e.Parameter));
	}
}
protected void CbUserName_OnItemRequestedByValue_SQL(object source, ListEditItemRequestedByValueEventArgs e)
{
	//Olması gerek
}
protected void CbUserName_OnItemsRequestedByFilterCondition_SQL(object source, ListEditItemsRequestedByFilterConditionEventArgs e)
{
	if (e.Filter.Length >= 3)
	{
		ASPxComboBox cbUserName = (ASPxComboBox)source;
		UserService.User[] UserList = ucProxy.UserManager.GetUserListByName(e.Filter);
		cbUserName.DataSource = UserList;
		cbUserName.DataBind();
	}
}
private void SaveUpdateCardStationOperator(ASPxGridView gridView)
{
	try
	{
		ASPxComboBox cbStation = (ASPxComboBox)gvCardStationOperator.FindEditFormTemplateControl("cbStation");
		ASPxComboBox cbUserName = (ASPxComboBox)gvCardStationOperator.FindEditFormTemplateControl("CbUserName");

		int OperatorID = 0, StationID = 0;
		int.TryParse(cbUserName.Value.ToString(), out OperatorID);
		int.TryParse(cbStation.Value.ToString(), out StationID);

		if (OperatorID > 0 && StationID > 0)
		{
			int SaveID = 0;
			if (gvCardStationOperator.EditingRowVisibleIndex >= 0)
			{//Update
				CardRule _CardRuleRow = (CardRule)gvCardStationOperator.GetRow(gvCardStationOperator.EditingRowVisibleIndex);

				CardRule _CardRule = new CardRule();
				_CardRule.RuleID = _CardRuleRow.RuleID;
				_CardRule.ModifiedUserID = Convert.ToInt32(Session["UserId"].ToString());
				_CardRule.CardApp = _CardRuleRow.CardApp;
				_CardRule.Rule = EnumsCardRule.CardStationOperator;
				_CardRule.intValue1 = StationID;
				_CardRule.intValue2 = OperatorID;
				_CardRule.stringValue = string.Empty;

				SaveID = ucProxy.ObjectManager.SaveCardRule(_CardRule);
			}
			else
			{//Insert
				CardRule _CardRule = new CardRule();
				_CardRule.RuleID = 0;
				_CardRule.ModifiedUserID = Convert.ToInt32(Session["UserId"].ToString());
				_CardRule.CardApp = (EnumsCardApp)_CardApp;
				_CardRule.Rule = EnumsCardRule.CardStationOperator;
				_CardRule.intValue1 = StationID;
				_CardRule.intValue2 = OperatorID;
				_CardRule.stringValue = string.Empty;

				SaveID = ucProxy.ObjectManager.SaveCardRule(_CardRule);
			}

			if (SaveID > 0)
			{
				gvCardStationOperator.JSProperties["cpOpenPopUp"] = true;
				gvCardStationOperator.JSProperties["cpMessage"] = "Kayıt İşleminiz Başarıyla Gerçekleştirildi";
			}
			else
			{
				gvCardStationOperator.JSProperties["cpOpenPopUp"] = true;
				gvCardStationOperator.JSProperties["cpMessage"] = "Kayıt işleminiz gerçekleşemedi. Lütfen Sistem Yöneticinizle Görüşünüz";
			}
		}
		else
		{
			gvCardStationOperator.JSProperties["cpOpenPopUp"] = true;
			gvCardStationOperator.JSProperties["cpMessage"] = "Lütfen Tüm Alanları Eksiksiz Doldurunuz";
		}
		Session["uc_CardRules"] = null;
	}
	catch (Exception ex)
	{
		Session["uc_CardRules"] = null;
		gvCardStationOperator.JSProperties["cpOpenPopUp"] = true;
		gvCardStationOperator.JSProperties["cpMessage"] = "Beklenilmeyen Hata!\n\n" + ex.Message;
	}
}
private void DeleteOfflineAction(int RuleID)
{
	try
	{
		List<Filter> _FilterList = new List<Filter>();
		Filter _Filter = new Filter();
		_Filter.FieldName = "RuleID";
		_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
		_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
		_Filter.FilterIntValue = RuleID;
		_FilterList.Add(_Filter);

		var tmp = ucProxy.ObjectManager.GetCardRules(_FilterList.ToArray());
		if (tmp != null && tmp.Count() == 1)
		{
			CardRule _CardRule = tmp.FirstOrDefault();
			ucProxy.ObjectManager.DeleteCardRule(_CardRule.RuleID);
			gvCardStationOperator.JSProperties["cpMessage"] = "Silme İşleminiz Gerçekleşmiştir";

			Session["uc_CardRules"] = null;
			gvCardStationOperator.JSProperties["cpOpenPopUp"] = true;
		}
	}
	catch (Exception ex)
	{
		Session["uc_CardRules"] = null;
		gvCardStationOperator.JSProperties["cpOpenPopUp"] = true;
		gvCardStationOperator.JSProperties["cpMessage"] = "Beklenilmeyen Hata!\n\n" + ex.Message;
	}
}
private void FillStation(ASPxComboBox Combobox, int LocationID)
{
	List<Filter> _FilterList = new List<Filter>();
	Filter _Filter = new Filter();
	_Filter.FieldName = "LocationID";
	_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
	_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
	_Filter.FilterIntValue = LocationID;
	_FilterList.Add(_Filter);
	_Filter = new Filter();
	_Filter.FieldName = "State";
	_Filter.CriteriaMode = EnumsFilterCriteriaMode.Equal;
	_Filter.CriteriaOperator = EnumsFilterCriteriaOperator.And;
	_Filter.FilterIntValue = Convert.ToInt32(EnumsCardState.Active);
	_FilterList.Add(_Filter);
	var tmp = ucProxy.ObjectManager.GetCardStations(_FilterList.ToArray());
	if (tmp != null)
	{
		foreach (CardStationObject item in tmp)
		{
			Combobox.Items.Add(item.Description, item.StationID);
		}
	}
}

 

Temel Linq to Sql Örnekleri

Yeni Kayıt
public static int SaveUser(User user)
{
	using (DbClassesDataContext tmpContext = new DbClassesDataContext())
	{
		tmpContext.Users.InsertOnSubmit(user);
		tmpContext.SubmitChanges();
		return user.ID;
	}
}
 Kayıt Bulma
public static User GetUserByID(int userID)
{
	using (DbClassesDataContext tmpContext = new DbClassesDataContext())
	{
		return (from u in tmpContext.Users
				where u.ID == userID
				select u).SingleOrDefault();
	}
}
 Kayıt Güncelleme
public static int UpdateUser(User user)
{
	using (DbClassesDataContext tmpContext = new DbClassesDataContext())
	{
		User oldUser = GetUserByID(user.ID);
		tmpContext.Users.Attach(user, oldUser);
		tmpContext.SubmitChanges();
		return User.ID;
	}
}

 

Kayıt Silme
public static void DeleteUser(int userID)
{
	using (DbClassesDataContext tmpContext = new DbClassesDataContext())
	{
		var tmpUser = GetUserByID(userID);
		tmpContext.Users.Attach(tmpUser);
		tmpContext.Users.DeleteOnSubmit(tmpUser);
		tmpContext.SubmitChanges();
	}
}

 

Gruplama

query.GroupBy(x => x.ID).Select(g => g.First());