Posts Tagged Firebird

Connecting from iPhone to Firebird

During the Friday I realized, that I did a long time nothing with my iPhone & MonoTouch development environment and I should try something more challenging. As I’m still fighting with some good idea for real world test application and my UIs are looking weird, I decided to turn my attention not to iPhone app directly, but to MonoTouch capabilities.

As a true geek I decided to try to connect to Firebird from iPhone. Although, thinking about it, I’m trying to connect to Firebird (or make it work with) with various technologies (Astoria offline, Silverlight, etc.). Because .NET provider for Firebird is pure C# and we have Mono compatible build, I deduced that it should work with iPhone too.

Sure, it’s a nice challenge to whole MonoTouch stack, because the .NET provider is more about the code than about the application itself. And we’re using there a lot of different things that can go wrong or may not be available or compilable to native code. And I have to say, the guys behind MonoTouch did a great work (I still can’t believe it).

With couple of minor tweaks I was able to create application that connects from iPhone (simulator) through internet to Firebird server. Pure C#, no hacking or major problems.


Application connecting to Firebird server and showing the server version.

First I’m impressed how mature the MonoTouch is. Second I’m still trying think thru all the possibilities you have with this. With some work on UI you can deliver the same database oriented application to Windows Mobile and iPhone using the same business layer (sure some webservice approach would be better, but …).

Looks like it’s time to stop playing and get some serious test app done.

I’m wondering whether we should start providing build of .NET provider for Firebird for MonoTouch/iPhone, as we have for Compact Framework?

Tags: , , , , , ,

Školení Firebird (3.)

Společně s Databázovým světem tu máme další Firebird školení. Více informací, včetně možnosti přihlášení na: http://www.dbsvet.cz/view.php?cisloclanku=2010012101.

Tags: ,

Photos from FBCon 09 München

Starter for (but not only) morning:

Holger Klemt:

Stefan Heymann doing the same as me:

Dmitry Yemanov:

Vlad Khorsun:

Roman Rokytskyy:

In between sessions:

During session:

In between sessions:

Everybody is solving problems during conference:

Talking about (not only) Firebird in hallways:

Tags: , ,

FBCon 09 – “live” feed

The conference is about to start. I’ll write here more and more from it, read it top to bottom.

  • It’s  8:25, conference rooms are getting the last polish. You can also deduct, that I successfully found the place.
  • The conference is held in Bauzentrum in München. There’s a lot of stuff for people who are building houses etc. in hallways. I like it. :)
  • Session from Dmitry. Good for people asking about limitations and features, why are/aren’t there. The final statement is that Firebird Project isn’t trying to implement all features from Oracle, MS SQL Server, PostgreSQL, … ;) But project is definitely open to good ideas from other projects. And no experiments with features.
  • The trace and audit session from Vlad just finished. I like this new feature, but I was not paying attention to during development, so this was a nice summary of my shattered knowledge. But what I don’t like is the configuration file format – mix of XML and standard text config file. :( And same for output, it’s not some kind of “computer ready” format, like i.e. again XML, it’s just a text, which will be for people harder to parse – but Thomas Steinmaurer already created one application. However the API is open, so probably sooner or later, I hope, somebody will create plugin with this output (and maybe also one for putting the content into database – what about MS SQL and using Analysis Services? :D )
  • After these sessions it was Holger’s turn. About the replication of databases. It was interesting to see the different approach based on creating the actual query executed from inside the trigger. Sure it has some limitations and we found some also during the session, but if you’re OK with the way how it works, it’s a good and easy-to-implement solution. But I think, just because I rather wanna to have more “based on values rather than on creating commands” approach to the synchronization/replication I would probably go in a different direction.
  • After this session was my session – the PocketPC and Firebird stuff. It was, sure, the best topic of the day ;) , and because describing own presentation is weird, I would just skip it and hand you to the recording which will be available, for sure.
  • The final session was a all-hands-session about the Firebird and performance. There’s nothing special to write about it, because everybody put his/her input it was better to be there than not.
  • And maybe the most important part was the city sightseeing and dinner during the evening. These “after-events” are great opprotunity to ask anybody you choose about your problem or give an interesting feedback, hence if you’re not here, you’re definitely missing something. :)

Day 2 is ready. Everybody fresh and relaxed ;) . Weather in München is nice.

  • The first session today was from Vlad about mainly some MS C++ runtime issues with recent changes in WinXP, Vista and Win7. If you were deploying the server in the meantime (or you’re using older (sub)versions) it was definitely worth listening. The current versions of Firebird server have not these issues, because it was successfully solved.
  • Following session was from Alex about new protocol features, mainly in 2.5. As a provider writer I was a nice overview of what I will need to do in next couple of months to catch up with server. :) Also if you wanna to use some brand new features, this session was a good opportunity to see what’s going on inside and what you can do (i.e. if you components are not supporting all options).
  • If you’re reading this, you missed my presentation, which was the next in schedule. Again I’ll skip any description.
  • Session finished right now was Holger’s about backup and restore. Because I saw last presentation from Ivan Prenosil last year about (I think) 10 ways of doing backup I was not expecting something new. But in fact there was something new. The IBExpert except the IBExpert itself has a really nice set of tools, like a scheduler for backup & restore which you can very easily plug into your environment and use it for almost hot backup of your database on different server. Similarly for dealing with metadata changes and pumping data out and in.
  • The final session from regular speaker was Dmitry’s about the lock manager. To be honest I was never paying to much attention to fb_lock_print utility and I had only a very limited knowledge about it. But this presentation, especially demos, widened my knowledge little bit and I know, at least, what useful information I can find there, and if I’ll not forgot all stuff also how to use these. ;) And seeing what’s going on inside the lock manager also helps understanding the internals.
  • Really the last session of the day was continuation of talking about improving performance of Firebird (itself or tools) and sharing and exchanging the information. Because everybody was contributing with (but mainly Holger) own pieces, it was really great ending of the day.

And here we’re. The last day of conference. Everybody is looking little bit exhausted, but I’m sure we all are gonna to survive no matter what. :)

  • First session of the day, was classical session about “what we can expect in next development and in next year”, held by Dmitry. It was a nice overview what’s going to happen and if you’re not a member of devel and/or architect list (or you’re not reading it often) also nice summary.
  • Then the Vlad came in with new SQL features in Firebird 2.5. As I like a 2.5 a lot and I’m using it for more than a year, I was more or less familiar with these features (although I’m using only few of these). So if you’re too lazy to read release notes for betas and RCs, this session was surely good for you.
  • Before the lunch Alex had session about security. I liked the small recap of the history of security in Firebird and InterBase. Then the walk thru the new features and improvements was really good and exhausting, nice samples. I’m really looking forward to Firebird 3.0 to test all new security, mainly authentication functions. This could also make life easier for i.e. hosting providers offering Firebird.
  • Once again (and for last this year) skipping my session. (BTW I realized that even if you’re reading this text, there’s change, that you’ve seen my presentation, so my yesterdays statement wasn’t completely correct.)
  • The session about the BI tools and Firebird from Roman was really nice. My focus is mainly in OLTP, and I’m looking to OLAP world only little bit, and this was a really nice for me to see also the other side of some problems and see, for me unknown, tools and what is and what is not possible and how hard or easy (desining some transformation looked really easy and quick, at a first sigh).
  • Following session was from Roman too. Simply about the Java driver and using it. It was really nice to see how it works in Java world and what problems they’re facing and comparing these in my head with .NET world problems. The example of Hibernate was nice too, as it’s a similar tool to Entity Framework and “father” of nHibernate, so I was able to briefly look to different approach for O/M mappers solution.
  • The final (of the day) + final (of the conference) session was simply roundtable, where every developer from different parts of Firebird project (core, .NET, Java, …) introduced little bit the subproject he is working on as well as him/herself. I was expecting people asking little bit too much about these subprojects and maybe sharing ideas and needs, but the discussion didn’t furiously started. A pity.

What to say about this years conference? It was good definitely. I was really enjoying my presence as well as my presentations. So see you next year, maybe face to face maybe reading this feed (if I’ll be doing it).

Tags: ,

Školení Firebird (2.)

Společně s Databázovým světem tu máme další Firebird školení. Více informací, včetně možnosti přihlášení na: http://www.dbsvet.cz/view.php?cisloclanku=2009110403.

Tags: ,

FBCon 2009 München – .NET + Firebird will be there

Next Firebird conference is coming. This year in München, Germany. I’ve never been in München though it’s pretty close to Czech Rep. thus I’m looking forward.

You can find info about conference at firebird-conference.com. I’ll be speaking there too, hence if you’re interested in Firebird and .NET you should definitely come. Every day I have one session. I’ll be covering new (2.5+) protocol implementation in .NET client for Firebird 2.1, Entity Framework support (also new in 2.5) and finally you’ll see how to create Windows phone (formely PocketPC, …) application and accessing Firebird database.

And the conference will be also great place to meet people you know from list etc. and talk face to face about your Firebird related problems, challenges and solutions. If you have any specific need to show (related to my three sessions) feel free to drop line in comments.

Tags: , , , , , , ,

Firebird(Client) with Silverlight

I had this idea on my list for a couple of months and I was always postponing it, because it’s stupid. But you know. Exploring the unexplored ways, that’s what I like to do :) .

But during (or after, I don’t remember) my presentation about Entity Framework there was a question about accessing the data provided by EF from Silverlight. Sure, doing it directly isn’t a good idea and in fact this is the reason why Astoria, eh, ADO.NET Data Services is here. But is this really stupid? Can it work?

Nope. Not at all. I tried to build FirebirdClient in a Silverlight environment and I failed. I expected to fail after some attempts with modifications and using only subset of features like i.e for Compact Framework, but this was really fast. Silverlight is only subset of .NET Framework. And one crucial part is not there, it’s System.Data stuff and without it you can drop major part of any ADO.NET provider’s code.

If you need data, use ADO.NET Data Services or any other webservices (which will also fit for DDL etc. commands). That also means, that writing Silverlight based Firebird database manager (without any support backend), which is one of few reasonable ideas, cannot be done either.

Tags: , ,

Firebird Developers’ Day 2009 :(

Možná jste si všimli, že jste si nevšimli žádné upoutávky na letošní Firebird Developers‘ Day. Není to chyba na vašem přijímači. Zatím žádné takové oznámení nebylo.

Popravdě, letos to s Firebird Developers‘ Day vypadá špatně. Ačkoli stále tvrdím, že “krize” je do jisté úrovně vyšroubovaná médii, asi zde v druhotné úrovni zasáhla. Jak jistě víte, Firebird Developers‘ Day je konference, která je zdarma, proto veškeré náklady musíme pokrýt ze sponzorských darů. Bohužel letos, jedna z hlavních úlev, kterou jsme měli – sál Věž na pražském Albertově není letos dostupný. A náklady na libovolné komerční prezentační místo jsou pro Firebird Developers‘ Day astronomické.

Zatím se nevzdáváme, je možné, že se něco podaří najít. Nicméně stále více začínáme uvažovat o přesunutí Firebird Developers‘ Day na jarní termín a výběr malého vstupného, které by pomohlo problémy s náklady vyřešit. Osobně si myslím, že konference je skvělou možností setkat se s lidmi z oboru a vyslechnout si (doufejme) zajímavá témata z různých koutů Firebirdu a proto by nemuselo být např. 200 korun dramatických pro návštěvníka a přitom by rapidně pomohlo konferenci.

Není to dobrá zpráva, ale nic není ztraceno. Tak jako tak, rád bych slyšel vaše názory na zavedení rozumného vstupného. Je to nepřekonatelný problém?

Tags: , ,

Generated primary key in Entity Framework model from Firebird

Firebird doesn’t have identity/autoincrement columns like i.e. MS SQL or MySQL. Firebird has concept of generators/sequences (as know i.e. in Oracle). This is more powerful concept, but comes also with drawbacks, because you can say for sure, whether the column values is generated or not. This is causing problems, if you set StoreGeneratedPattern in your model manually and then updated model from database – it’s lost. Because this can be big pain in the ass, FirebirdClient can now report the column as “Identity” if you give it little help.

If you put into comment of column #PK_GEN#, then FirebirdClient will report it as generated primary key, resulting in StoreGeneratedPattern to be set to “Identity”. Hence you don’t have to every time manually change the model and easily use automatic fetching of the value from database when saving changes. If you wanna test it, grab build from weekly builds.

Tags: , ,

Unique constraint on MS SQL?!

I have a strong feeling that MS SQL knows I don’t like it. I don’t say it’s a bad database, but sometimes it’s really “interesting”. ;)

OK, so what I faced this time? Let’s start with basic facts. The NULL value in database is a special value. NULL and NULL is again NULL, NULL and False is again NULL and NULL isn’t equal to NULL. Two days ago I was creating a chain of records in database (which isn’t too relationalish, but …) and I needed unique constraint on one column. No problem you may think. So did I. But not in MS SQL.

Check this example:

1> create table test(id int primary key, foo int);
2> create unique index idx_text on test(foo);
3> go
1> insert into test values (1, null);
2> go

(1 rows affected)
1> insert into test values (2, null);
2> go
Msg 2601, Level 14, State 1, Server X2-001\SQLEXPRESS, Line 1 Cannot insert duplicate key row in object 'dbo.test' with unique index 'idx_text '.
The statement has been terminated.

What a mess! Looks like somebody in MS SQL engine team thinks NULL == NULL. After some railing, testing on Firebird and asking my friend about Oracle, I googled: https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=299229. Looks like I’m not alone; feeling better. ;)
Luckily I’m working on MS SQL 2008 and I can use filtered indices. Created unique index with where clause where <column> is not null and I’m done. But boy that was a bitter finding. Hope I’ll not be punched to the face with these basics again in an at least two months.

Tags: , , ,

FirebirdClient and InterBase

Wondering what changed on Earth in last, say, four weeks. I’m getting more than average (read: more than zero) emails, asking whether FirebirdClient works with InterBase. Similarly in mailing list.

Well, the short answer is no. The long: FirebirdClient is created as part of Firebird project. Hence it’s focused on Firebird. And even both Firebird and InterBase have same history, now the engines, and more in future, are more and more different. So it may work (with some tweaks) with current versions of InterBase, but it’s tested with (sponsored by, focused on) Firebird only.

Tags: ,

First touches on Code Only in EF4

I finally got my hands on the new feature in EF4, Code Only. It’s now available in feature CTP. What’s the code only? Very shortly you write just a code and express your mapping in code as well. There’s no model, no edmx file, no CSDL, MSL, SSDL files.

The current version is pretty limited, it’s more preview than something you can do some work with (which I wasn’t aware of and I was little disappointed). You can read more about what will be available on http://blogs.msdn.com/efdesign/archive/2009/06/10/code-only.aspx, http://blogs.msdn.com/efdesign/archive/2009/08/03/code-only-enhancements.aspx and http://thedatafarm.com/blog/data-access/next-version-of-ef-code-only-design-laid-out-by-ms/.

I mainly wanted to try it on a non standard (read: not “follow this demo”) MS SQL database and on Firebird as well. The first bad news is, that current CTP supports only SqlClient. And probably some following previews will too, as the other providers model will be built on top of it (but I’ll try to push this as much as I can, to see some Firebird demo soon). The other is, that the currently available version is limited, even features in first Code Only blog post are not working. :( Right now you can only create a context and use it for work with all defaults – default names for tables, default mapping etc.

using (SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=testovaci;Integrated Security=True;Pooling=False"))
{
	ContextBuilder<COContext> builder = new ContextBuilder<COContext>();
	COContext context = builder.Create(conn);
	string script = context.CreateDatabaseScript();
	context.Masters.ToArray();
}

Nothing special. If you try it with FirebirdClient, you’ll get NotSupportedException immediately. Dammit.

using (FbConnection conn = new FbConnection("database=localhost:rrr.fdb;user=sysdba;password=sysdba"))
{
	ContextBuilder<COContext> builder = new ContextBuilder<COContext>();
	builder.Create(conn);
}

Despite the frustration I found couple of new interesting extension methods (in Microsoft.Data.Objects, also ContextBuilder sits there). One of these is CreateDatabaseScript. This method works not only with Code Only created ObjectContext, but on every ObjectContext. So you can create your database creation script during runtime even if you’re using i.e. EDMX file easily. I’m also seeing great opportunity for this with Code Only setup during runtime. You can have different builds with different setups and create script for users based on selection. And by the way, there’s also CreateDatabase method available. But again right now works only with MS SQL only. But I know other databases will be supported as well, I have tested some pieces already.

I like the Code Only feature, maybe more than Model First (probably because I’m using ERD tools to model my databases). And I’m looking forward to see more progress on it, and also the model for 3rd party providers.

Tags: , , ,

FirebirdClient 2.5.1 released

I’m proud to announce next version of FirebirdClient – 2.5.1. This release is focused mainly on bug fixes, no new features were added.

You can see all fixed issues from tracker. And download it from http://firebirdsql.org/index.php?op=files&id=netprovider.

Thanks to all people who reported any issues for trying to make FirebirdClient better.

Tags: ,

Astoria “offline” and Firebird

Few weeks ago I was playing (and I’m still about to continue playing) and writing about Astoria offline. I setted up some challenge for me to try to make it work with Firebird (as the big database, SQL CE still as local store). It looked like it should be plausible. But it’s not. :)

After creating model from database, creating and rewriting sql scripts for Firebird, I tried to use this model in Astoria offline. Here I hit the wall. After couple of hours I gave up and talked with Pablo Castro, who did much of the work in Astoria offline. He confirmed that there’s no particular check and reject other databases, but with this “offline preview” there’s a lot of assumption for MS SQL Server.

Never mind, when another test version will be available be sure, I’ll try it and we’ll see what’s what. :)

Tags: , , ,

Školení Firebird

Společně s Databázovým světem jsem připravil prefabrikované školení týkající se Firebirdu. Podrobnosti naleznete na http://www.dbsvet.cz/view.php?cisloclanku=2009083103, včetně možnosti registrace. Pokud vše půjde dobře, nabídneme brzy i pokročilejší témata.

No a pokud máte zájem o školení na míru (nejenom Firebird), využijte http://www.x2develop.com/kontakt.html.

Tags: ,

Playing with Astoria “offline”

Astoria so called offline has been released while ago. But until now I have no time and yen for playing with it. When I first heard about offline support for Astoria I was thinking, hmm that’s going to be cool and though that it will be build inside the client itself, with an option to store this information and do offline work when no connection is available – something like “we suppose the connection is mostly available, hence this is only for the few cases when not”.

But not. Astoria offline (at least the preview is based on, of course, regular Astoria and Entity Framework and then Sync Framework.So finally it works like this. You’re doing queries using Entity Framework (local model) and local SQLCE database and if you need to get fresh data and/or push data back, you simply synchronize this source, using Sync Framework, with the webservice. That’s a little bit different from what I was expecting. :)

I was playing with MS SQL Server as the source for webservice (but I’m also planing to use Firebird, but that needs some more hand work). Simple master-detail scenario for start (for conflicts and ordering testing it’s enough).

create table sync_master(id int primary key, foo nvarchar(20) not null);
create table sync_detail(id int primary key, id_master int not null, bar nvarchar(20) not null);
alter table sync_detail add foreign key (id_master) references sync_master(id);

If you have your database ready, you’ll add new model and the service. Currently the alpha preview generates you change script, to add some tracking columns into your tables and you’ll simply run it. Good news is that you’ll also get the script with drops and removes, thus after playing you can put tables back into original shape (but I still prefer playing on separate tables, as during testing I screw a lot of stuff). Configuration of service is more or less the same. Only change you have to do, is to allow synchronization.

(config as IDataServiceConfiguration2).AllowSynchronization = true;

That’s all. The service works as classic Astoria (I still get not used to ADO.NET Data Service name). Now the fun stuff comes. You can add any type of application to use the Astoria offline. I started with simple console application, to introduce as less as possible external screwing inputs.

First problem you may encounter is not working “auto setup” for offline work. I did dozen of apps and didn’t find reliable way to make it work always. Close to this I was with these steps (but still not 100%):

  • recompile the service
  • view it in browser
  • access one entity set
  • hope for the best

Now when you add service reference to you project the additional process kicks in (should) and generates local SQLCE database, the model and some classes. When I was able to make this work, every time I reached the Adding new database file to project... step I get error message:

An error occurred while processing the local data file: 

Exception has been thrown by the target of an invocation.

Clicking OK and ignoring it worked and introduced none (as far as I’m aware of) problems later. No problem, remember it’s alpha preview. With finally all set up, you can start playing.

static void Main(string[] args)
{
	using (testovaciEntities ent = new testovaciEntities())
	{
		sync_master m = ent.sync_master.FirstOrDefault();
		if (m != null)
		{
			Console.WriteLine("Old: {0}", m.foo);
			m.foo = "b";
			Console.WriteLine("New: {0}", m.foo);

			ent.SaveChanges();
		}
		else
		{
			Console.WriteLine("No item");
		}
	}

	using (testovaciEntities ent = new testovaciEntities())
	{
		foreach (var item in ent.sync_master)
		{
			Console.WriteLine("ID: {0} \t Foo: {1}", item.id, item.foo);
		}
	}

	Console.WriteLine("Syncing");
	Sync();
	Console.WriteLine("Done");

	using (testovaciEntities ent = new testovaciEntities())
	{
		foreach (var item in ent.sync_master)
		{
			Console.WriteLine("ID: {0} \t Foo: {1}", item.id, item.foo);
		}
	}
}

static void Sync()
{
	var serviceSync = new DataServiceSyncProvider(new Uri("http://localhost:1744/WebDataService1.svc"), "global");

	var localSync = new ObjectContextSyncProvider(() => new testovaciEntities());
	localSync.ConflictHandler =
		(ISyncRecord sourceChange, ISyncRecord destinationChange) =>
		{
			Console.WriteLine("Conflict");

			return SyncConflictResolutionAction.SourceWins;
			//return SyncConflictResolutionAction.DestinationWins;
		};

	var so = new SyncOrchestrator();
	so.RemoteProvider = serviceSync;
	so.LocalProvider = localSync;
	so.Direction = SyncDirectionOrder.UploadAndDownload;
	so.StateChanged +=
		(object sender, SyncOrchestratorStateChangedEventArgs e) =>
		{
			Console.WriteLine("From {0} to {1}", e.OldState, e.NewState);
		};

	try
	{
		SyncOperationStatistics stats = so.Synchronize();
	}
	catch (Exception ex)
	{
		Console.WriteLine(ex.Message);
	}
}

I was expecting the synchronization to just work, and yep, it does. Anyway I was more interested in some conflicts, ordering etc. Because I was playing with Sync Framework when it was introduced and also done couple of presentations, I wasn’t expecting some problems with ordering.

The conflict resolution is little bit different than in pure Sync Framework, but the idea behind is the same. Simply check SyncConflictResolutionAction enum (there’s no MSDN doc for it right now). The synchronization worked for me as well, with some minor problems. Sometimes the conflict was resolved, but one source kept the old data. Maybe I’m doing something wrong, maybe it needs some support in ResolveSyncConflict on server side too. Never mind, I think in beta it will shine.

OK, that’s pretty much all. It works, have some bugs (but remember it’s alpha preview) and in some scenarios could be really useful. Let’s try the Firebird – Entity Framework (and Astoria) works with Firebird, the Sync Framework too, so how hard can it be …

Tags: , , , ,

What roles is user able to use?

About a month ago there was a question in Firebird (CZ) group how to find whether the user is able to use particular role or to get all roles for user.

As you probably know, a lot of stuff (almost everything) is in system catalog (system tables). The only problem is to figure out what’s the right set of parameters to use. To get all roles with users able to use it, you can use:

select rdb$relation_name as "Role", rdb$user as "User" from rdb$user_privileges
where rdb$privilege = 'M' and rdb$user_type = 8 and rdb$object_type = 13;

The rdb$privilege = 'M' is to get all member of privileges, the rdb$user_type = 8 is about getting records for users and finally rdb$object_type = 13 filters only for roles records.

The rdb$user_privileges table contains all privileges defined for the database – tables, stored procedures, triggers, roles, …, but also take into account that current versions of Firebird (<3.0) are storing users (only, not roles) in system wide security database.

Tags:

Entity Framework v4 and Firebird

The Beta 1 of Entity Framework v4 (confused with versions?) is out for a while and you may be tempted to check the new features comming. And why not with Firebird.

Good news is, that there’s no breaking change right now I’m aware of. Hence you can easily jump into VS2010, install DDEX and test it. Of course, some new features are now not fully functioning as it’s beta and/or because it’s not nailed down for provider writers (i.e. DDL script generation). But as far as something will be ready, I’ll try my best to get it into Firebird’s provider.

On the other hand, even the new singularize/pluralize function is nice and works with all databases, you still get all names in uppercase, only the added suffixes are lowercase. And that looks even more weird. You can fix it yourself manually or let computer do the work, but still wondering why there isn’t any option to fix this (as uppercased name is default when not quoted according to SQL standard).

Anyway, if you found any problems with EF4, let me know.

Tags: , ,

Firebird and FirebirdClient used in IBM’s AppScan Standard Edition

Few days ago I got interesing information that IBM in AppScan Standard Edition is using Firebird database and FirebirdClient as .NET provider. It’s a great finding where all is Firebird used.

Do you have any interesting usage of Firebird and/or FirebirdClient? Let us (or me) know.

Tags: ,

Logging and caching queries in EF

Jarek Kowalski posted to MSDN Code Gallery wrappers for any ADO.NET Entity Framework provider with ability to do caching and logging.

For me especially the logging (EFTracingProvider) is interesting, as I’m always checking queries sent to database. For selects it’s plausible with ToTraceString method (but not with i.e. query.First()), but looking for CUD is not so easy. With EF provider for Firebird, you can check, by default, Output window of Visual Studio, where all queries are placed or use any listener to write these i.e. to the file (this logging is only in debug builds of FirebirdClient).

I was thinking about creating some wrapped provider, but this is better (and without work ;) ).

Tags: , , ,