<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Maciej Grabek &#187; LINQ</title>
	<atom:link href="https://blog.maciejgrabek.com/tag/linq/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.maciejgrabek.com</link>
	<description>/* Make it See Sharp - Windows Phone, C#, .NET i nie tylko */</description>
	<lastBuildDate>Mon, 27 Oct 2014 11:18:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>DBML to SQL</title>
		<link>https://blog.maciejgrabek.com/2010/11/04/dbml-to-sql/</link>
		<comments>https://blog.maciejgrabek.com/2010/11/04/dbml-to-sql/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 19:42:34 +0000</pubDate>
		<dc:creator><![CDATA[maciek]]></dc:creator>
				<category><![CDATA[HOW TO]]></category>
		<category><![CDATA[DBML to SQL]]></category>
		<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://maciejgrabek.com/?p=10291</guid>
		<description><![CDATA[Gdy przygotowywałem stronę z projektami i byłem przy ShipBattleChallenge, gdy okazało się, że przed formatowaniem dysku nie zrobiłem backupu bazy danych dla turnieju SBC. Tak &#8211; zrobiłem mini programik, który zamiast mnie uruchamia odpowiednie walki botów i loguje przebiegi walk do bazy &#8211; Tournament Master :). W związku z tym, że nie jest to kluczowe dla projektu postanowiłem wyłączyć to z solucji. Jednakże po chwili namysłu stwierdziłem, że skoro w dbml&#8217;u sa informacje na temat tabel, to może coś da się z tym zrobić&#8230; Dziś udało mi się zasiąść do tematu i poszukać co i jak. Okazuje się, że obiekty typu DataContext posiadają metodę CreateDatabase(), która potrafi przywrócić zaimportowane do dbml&#8217;a struktury i relacje z bazy. Oczywiście obejmuje to tylko DDL (ang. Data Definition Language), a nie DML. W moim przypadku było to w zupełności wystarczające, gdyż korzystałem z bazy poprzez LINQ to SQL &#8211; bardziej dla testów niż z przekonania, ale okazało się to przydatne. Jak to zrobić? Wystarczy skorzystać z poniższego kawałka kodu: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 private static void RestoreDB&#40;&#41; &#123; try &#123; DataClasses1DataContext bd = new DataClasses1DataContext&#40;DbmlTest.Properties.Settings.Default.DbmlTestNewConnectionString&#41;; if &#40;bd.DatabaseExists&#40;&#41;&#41; &#123;<a href="https://blog.maciejgrabek.com/2010/11/04/dbml-to-sql/" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
				<content:encoded><![CDATA[<p>Gdy przygotowywałem stronę z projektami i byłem przy <a href="http://maciejgrabek.com/projekty" target="_blank">ShipBattleChallenge</a>, gdy okazało się, że przed formatowaniem dysku nie zrobiłem backupu bazy danych dla turnieju SBC. Tak &#8211; zrobiłem mini programik, który zamiast mnie uruchamia odpowiednie walki botów i loguje przebiegi walk do bazy &#8211; Tournament Master :). W związku z tym, że nie jest to kluczowe dla projektu postanowiłem wyłączyć to z solucji. Jednakże po chwili namysłu stwierdziłem, że skoro w dbml&#8217;u sa informacje na temat tabel, to może coś da się z tym zrobić&#8230; Dziś udało mi się zasiąść do tematu i poszukać co i jak. Okazuje się, że obiekty typu DataContext posiadają metodę CreateDatabase(), która potrafi przywrócić zaimportowane do dbml&#8217;a struktury i relacje z bazy. Oczywiście obejmuje to tylko DDL (ang. Data Definition Language), a nie DML. W moim przypadku było to w zupełności wystarczające, gdyż korzystałem z bazy poprzez LINQ to SQL &#8211; bardziej dla testów niż z przekonania, ale okazało się to przydatne.</p>
<p>Jak to zrobić? Wystarczy skorzystać z poniższego kawałka kodu:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> RestoreDB<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0600FF; font-weight: bold;">try</span>
	<span style="color: #008000;">&#123;</span>
		DataClasses1DataContext bd <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> DataClasses1DataContext<span style="color: #008000;">&#40;</span>DbmlTest<span style="color: #008000;">.</span><span style="color: #0000FF;">Properties</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Settings</span><span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Default</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DbmlTestNewConnectionString</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>bd<span style="color: #008000;">.</span><span style="color: #0000FF;">DatabaseExists</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Database exists&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
			bd<span style="color: #008000;">.</span><span style="color: #0000FF;">DeleteDatabase</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
			Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Database deleted&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
		bd<span style="color: #008000;">.</span><span style="color: #0000FF;">CreateDatabase</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Database restored&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>Exception ex<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Error&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span>ex<span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Dla porządku dodam, że nie trzeba korzystać z konstruktora wymagającego connection stringa, lecz śmiało można użyć domyślnego. W demie mam zdefiniowane połączenia do dwóch baz, starej i nowej (docelowa baza do odtworzenia), dlatego wybrałem takie rozwiązanie.</p>
<p><a href="http://maciejgrabek.com/projects-upload/DbmlTest.zip" target="_blank">Pobierz przykład</a></p>
]]></content:encoded>
			<wfw:commentRss>https://blog.maciejgrabek.com/2010/11/04/dbml-to-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
