Pagine

mercoledì 21 aprile 2010

Creare una connection string per EntityFramework a partire da una ConnectionString generica
(Scusate se il codice non è molto leggibile, ma lo spazio è quello che è)

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Data.SqlClient;
using
System.Data.EntityClient;
using
System.Configuration;
using
System.Data.Objects;
using
System.IO;

namespace NameSpace.Commons
{
public class EntityConnStringBuilder
{
public static string GetNewAgeConnectionString(string dataModelName)
{
var esc = new EntitySqlConnectionStringBuilder(dataModelName, "ConnString");
return esc.GenerateConnectionString();
}
}

public sealed class EntitySqlConnectionStringBuilder
{
public string DataModelName { get; private set; }
public string ConnStringTagName { get; private set; }

public EntitySqlConnectionStringBuilder(string dataModelName, string connStringTagName)
{
DataModelName = dataModelName;
ConnStringTagName = connStringTagName;
}

public string GenerateConnectionString()
{
var connectString = GetSqlConnectionStringFromConfig();
var sqlBuilder = new SqlConnectionStringBuilder(connectString.ConnectionString);
string providerString = sqlBuilder.ToString();
var entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = connectString.ProviderName;
entityBuilder.ProviderConnectionString = providerString;
entityBuilder.Metadata = GetMetadata();
return entityBuilder.ConnectionString;
}

private string GetMetadata()
{
var sb = new StringBuilder();
sb.Append(@"res://*/");
sb.Append(DataModelName);
sb.Append(@".csdl|");
sb.Append(@"res://*/");
sb.Append(DataModelName);
sb.Append(@".ssdl|");
sb.Append(@"res://*/");
sb.Append(DataModelName);
sb.Append(@".msl");
return sb.ToString();
}

private ConnectionStringSettings GetSqlConnectionStringFromConfig()
{
var conn = ConfigurationManager.ConnectionStrings[ConnStringTagName];
if (conn == null)
{
var strConn = ConfigurationManager.AppSettings[ConnStringTagName];
if (string.IsNullOrEmpty(strConn))
throw new ArgumentException("Nessuna Tag trovato tra le ConnectionString or AppSettings del file di configurazione per il connStringTagName in input :" + ConnStringTagName);
conn = new ConnectionStringSettings();
conn.ConnectionString = strConn;
conn.ProviderName = "System.Data.SqlClient";
}
return conn;
}
}
}

sabato 17 aprile 2010

Linq sql - Select di 2 tabelle in left join

var qry = from n in context.Nazionis
join c in context.Cittas on n.IdNazione equals c.IdNazione
into joinLeft_nazione
from joinLeft_n in joinLeft_nazione.DefaultIfEmpty()
select new
{
IdNazione = n.IdNazione,
DescNazione = n.DesNazione,
IdCitta = joinLeft_n.IdCitta,
DescCitta = joinLeft_n.DescCitta
};

var list = qry.ToList();
Linq sql - Select di 2 tabelle in join

var qry = from n in context.Nazionis
join c in context.Cittas on n.IdNazione equals c.IdNazione
select new
{
IdNazione = n.IdNazione,
DescNazione = n.DesNazione,
IdCitta = c.IdCitta,
DescCitta = c.DescCitta
};

var list = qry.ToList();
Linq sql - Select di una tabella

var qry = from n in context.Nazionis
select n;

var list = qry.ToList();
Linq sql - Connessione ad un DataBase

string connectionString = "packet size=4096;user id=sa;data source=(local);persist security info=True;initial catalog=NomeDataBase;password=xxxx;";
var context = new DataContextNomeDataBase(connectionString);
// È possibile guardare l'SQL come è eseguito, nella finestra di output, inserendo DataContext.Log = Console.Out
context.Log = Console.Out;

venerdì 16 aprile 2010

Stringa di connessione Sql Server in un Web.config

<configSections>
...
<connectionStrings>
<add name="connstring" connectionString="packet size=4096;user id=xxx;data source=(local);persist security info=True;initial catalog=NOME_DATABASE;password=xxx;" providerName="System.Data.SqlClient"/>
connectionStrings>
...
configSections>

data source: istanza del DataBase
user id: utente DataBase
password: password DataBase
initial catalog: nome DataBase

Recupero stringa di connessione in WebApplication C#

using System.Configuration;
...
string _connectionString = ConfigurationManager.AppSettings["ConnstringGESTIONEFLUSSOlocal"];